From 2675ff8f16af7a90ab60e637b00c0441987acd26 Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Tue, 22 Nov 2022 14:17:04 -0600 Subject: [PATCH 1/5] pre-load wfo point info for regional and travel cities --- .vscode/launch.json | 18 + datagenerators/chunk.js | 22 + datagenerators/https.js | 8 +- datagenerators/output/regionalcities.json | 1162 ++++++++++++++++++++ datagenerators/output/travelcities.json | 242 ++++ datagenerators/regionalcities-raw.json | 582 ++++++++++ datagenerators/regionalcities.js | 41 + datagenerators/stations.js | 12 +- datagenerators/travelcities-raw.json | 122 ++ datagenerators/travelcities.js | 41 + server/scripts/data/regionalcities.js | 580 ++++++++++ server/scripts/data/travelcities.js | 120 ++ server/scripts/modules/regionalforecast.js | 9 +- server/scripts/modules/travelforecast.js | 4 +- 14 files changed, 2945 insertions(+), 18 deletions(-) create mode 100644 datagenerators/chunk.js create mode 100644 datagenerators/output/regionalcities.json create mode 100644 datagenerators/output/travelcities.json create mode 100644 datagenerators/regionalcities-raw.json create mode 100644 datagenerators/regionalcities.js create mode 100644 datagenerators/travelcities-raw.json create mode 100644 datagenerators/travelcities.js diff --git a/.vscode/launch.json b/.vscode/launch.json index acd1201..a314d6b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -25,6 +25,24 @@ ], "type": "pwa-node" }, + { + "name": "Data:regionalcities", + "program": "${workspaceFolder}/datagenerators/regionalcities.js", + "request": "launch", + "skipFiles": [ + "/**" + ], + "type": "pwa-node" + }, + { + "name": "Data:travelcities", + "program": "${workspaceFolder}/datagenerators/travelcities.js", + "request": "launch", + "skipFiles": [ + "/**" + ], + "type": "pwa-node" + }, { "type": "node", "request": "launch", diff --git a/datagenerators/chunk.js b/datagenerators/chunk.js new file mode 100644 index 0000000..2fe6478 --- /dev/null +++ b/datagenerators/chunk.js @@ -0,0 +1,22 @@ +// turn a long array into a set of smaller chunks + +const chunk = (data, chunkSize = 10) => { + const chunks = []; + + let thisChunk = []; + + data.forEach((d) => { + if (thisChunk.length >= chunkSize) { + chunks.push(thisChunk); + thisChunk = []; + } + thisChunk.push(d); + }); + + // final chunk + if (thisChunk.length > 0) chunks.push(thisChunk); + + return chunks; +}; + +module.exports = chunk; diff --git a/datagenerators/https.js b/datagenerators/https.js index f46fbf8..87a9a81 100644 --- a/datagenerators/https.js +++ b/datagenerators/https.js @@ -8,17 +8,17 @@ module.exports = (url) => new Promise((resolve, reject) => { https.get(url, { headers, - }, res => { + }, (res) => { if (res.statusCode === 200) { const buffers = []; - res.on('data', data => buffers.push(data)); + res.on('data', (data) => buffers.push(data)); res.on('end', () => resolve(Buffer.concat(buffers).toString())); } else { console.log(res); reject(new Error(`Unable to get: ${url}`)); } - }).on('error', e=> { + }).on('error', (e) => { console.log(e); reject(e); }); -}); \ No newline at end of file +}); diff --git a/datagenerators/output/regionalcities.json b/datagenerators/output/regionalcities.json new file mode 100644 index 0000000..93717b1 --- /dev/null +++ b/datagenerators/output/regionalcities.json @@ -0,0 +1,1162 @@ +[ + { + "city": "Atlanta", + "lat": 33.749, + "lon": -84.388, + "point": { + "x": 50, + "y": 86, + "wfo": "FFC" + } + }, + { + "city": "Boston", + "lat": 42.3584, + "lon": -71.0598, + "point": { + "x": 71, + "y": 90, + "wfo": "BOX" + } + }, + { + "city": "Chicago", + "lat": 41.9796, + "lon": -87.9045, + "point": { + "x": 65, + "y": 76, + "wfo": "LOT" + } + }, + { + "city": "Cleveland", + "lat": 41.4995, + "lon": -81.6954, + "point": { + "x": 82, + "y": 64, + "wfo": "CLE" + } + }, + { + "city": "Dallas", + "lat": 32.8959, + "lon": -97.0372, + "point": { + "x": 79, + "y": 108, + "wfo": "FWD" + } + }, + { + "city": "Denver", + "lat": 39.7391, + "lon": -104.9847, + "point": { + "x": 62, + "y": 60, + "wfo": "BOU" + } + }, + { + "city": "Detroit", + "lat": 42.3314, + "lon": -83.0457, + "point": { + "x": 65, + "y": 33, + "wfo": "DTX" + } + }, + { + "city": "Hartford", + "lat": 41.7637, + "lon": -72.6851, + "point": { + "x": 21, + "y": 54, + "wfo": "BOX" + } + }, + { + "city": "Houston", + "lat": 29.7633, + "lon": -95.3633, + "point": { + "x": 65, + "y": 97, + "wfo": "HGX" + } + }, + { + "city": "Indianapolis", + "lat": 39.7684, + "lon": -86.158, + "point": { + "x": 57, + "y": 68, + "wfo": "IND" + } + }, + { + "city": "Los Angeles", + "lat": 34.0522, + "lon": -118.2437, + "point": { + "x": 154, + "y": 44, + "wfo": "LOX" + } + }, + { + "city": "Miami", + "lat": 25.7743, + "lon": -80.1937, + "point": { + "x": 109, + "y": 50, + "wfo": "MFL" + } + }, + { + "city": "Minneapolis", + "lat": 44.98, + "lon": -93.2638, + "point": { + "x": 107, + "y": 71, + "wfo": "MPX" + } + }, + { + "city": "New York", + "lat": 40.78, + "lon": -73.88, + "point": { + "x": 36, + "y": 38, + "wfo": "OKX" + } + }, + { + "city": "Norfolk", + "lat": 36.8468, + "lon": -76.2852, + "point": { + "x": 89, + "y": 51, + "wfo": "AKQ" + } + }, + { + "city": "Orlando", + "lat": 28.5383, + "lon": -81.3792, + "point": { + "x": 26, + "y": 68, + "wfo": "MLB" + } + }, + { + "city": "Philadelphia", + "lat": 39.9523, + "lon": -75.1638, + "point": { + "x": 49, + "y": 75, + "wfo": "PHI" + } + }, + { + "city": "Pittsburgh", + "lat": 40.4406, + "lon": -79.9959, + "point": { + "x": 77, + "y": 65, + "wfo": "PBZ" + } + }, + { + "city": "St. Louis", + "lat": 38.6273, + "lon": -90.1979, + "point": { + "x": 94, + "y": 73, + "wfo": "LSX" + } + }, + { + "city": "San Francisco", + "lat": 37.6148, + "lon": -122.3918, + "point": { + "x": 84, + "y": 98, + "wfo": "MTR" + } + }, + { + "city": "Seattle", + "lat": 47.6062, + "lon": -122.3321, + "point": { + "x": 124, + "y": 67, + "wfo": "SEW" + } + }, + { + "city": "Syracuse", + "lat": 43.0481, + "lon": -76.1474, + "point": { + "x": 51, + "y": 98, + "wfo": "BGM" + } + }, + { + "city": "Tampa", + "lat": 27.9756, + "lon": -82.5329, + "point": { + "x": 67, + "y": 97, + "wfo": "TBW" + } + }, + { + "city": "Washington DC", + "lat": 38.8951, + "lon": -77.0364, + "point": { + "x": 97, + "y": 71, + "wfo": "LWX" + } + }, + { + "city": "Albany", + "lat": 42.6526, + "lon": -73.7562, + "point": { + "x": 58, + "y": 58, + "wfo": "ALY" + } + }, + { + "city": "Albuquerque", + "lat": 35.0845, + "lon": -106.6511, + "point": { + "x": 97, + "y": 118, + "wfo": "ABQ" + } + }, + { + "city": "Amarillo", + "lat": 35.222, + "lon": -101.8313, + "point": { + "x": 47, + "y": 25, + "wfo": "AMA" + } + }, + { + "city": "Anchorage", + "lat": 61.2181, + "lon": -149.9003, + "point": { + "x": 125, + "y": 236, + "wfo": "AER" + } + }, + { + "city": "Austin", + "lat": 30.2671, + "lon": -97.7431, + "point": { + "x": 155, + "y": 90, + "wfo": "EWX" + } + }, + { + "city": "Baker", + "lat": 44.7502, + "lon": -117.6677, + "point": { + "x": 93, + "y": 145, + "wfo": "BOI" + } + }, + { + "city": "Baltimore", + "lat": 39.2904, + "lon": -76.6122, + "point": { + "x": 109, + "y": 91, + "wfo": "LWX" + } + }, + { + "city": "Bangor", + "lat": 44.8012, + "lon": -68.7778, + "point": { + "x": 72, + "y": 62, + "wfo": "CAR" + } + }, + { + "city": "Birmingham", + "lat": 33.5207, + "lon": -86.8025, + "point": { + "x": 58, + "y": 83, + "wfo": "BMX" + } + }, + { + "city": "Bismarck", + "lat": 46.8083, + "lon": -100.7837, + "point": { + "x": 109, + "y": 46, + "wfo": "BIS" + } + }, + { + "city": "Boise", + "lat": 43.6135, + "lon": -116.2034, + "point": { + "x": 132, + "y": 85, + "wfo": "BOI" + } + }, + { + "city": "Buffalo", + "lat": 42.8864, + "lon": -78.8784, + "point": { + "x": 35, + "y": 46, + "wfo": "BUF" + } + }, + { + "city": "Carlsbad", + "lat": 32.4207, + "lon": -104.2288, + "point": { + "x": 44, + "y": 156, + "wfo": "MAF" + } + }, + { + "city": "Charleston", + "lat": 32.7766, + "lon": -79.9309, + "point": { + "x": 86, + "y": 76, + "wfo": "CHS" + } + }, + { + "city": "Charleston", + "lat": 38.3498, + "lon": -81.6326, + "point": { + "x": 62, + "y": 66, + "wfo": "RLX" + } + }, + { + "city": "Charlotte", + "lat": 35.2271, + "lon": -80.8431, + "point": { + "x": 118, + "y": 64, + "wfo": "GSP" + } + }, + { + "city": "Cheyenne", + "lat": 41.14, + "lon": -104.8202, + "point": { + "x": 109, + "y": 13, + "wfo": "CYS" + } + }, + { + "city": "Cincinnati", + "lat": 39.162, + "lon": -84.4569, + "point": { + "x": 36, + "y": 40, + "wfo": "ILN" + } + }, + { + "city": "Columbia", + "lat": 34.0007, + "lon": -81.0348, + "point": { + "x": 65, + "y": 61, + "wfo": "CAE" + } + }, + { + "city": "Columbus", + "lat": 39.9612, + "lon": -82.9988, + "point": { + "x": 84, + "y": 80, + "wfo": "ILN" + } + }, + { + "city": "Des Moines", + "lat": 41.6005, + "lon": -93.6091, + "point": { + "x": 73, + "y": 49, + "wfo": "DMX" + } + }, + { + "city": "Dubuque", + "lat": 42.5006, + "lon": -90.6646, + "point": { + "x": 62, + "y": 110, + "wfo": "DVN" + } + }, + { + "city": "Duluth", + "lat": 46.7833, + "lon": -92.1066, + "point": { + "x": 91, + "y": 69, + "wfo": "DLH" + } + }, + { + "city": "Eastport", + "lat": 44.9062, + "lon": -66.99, + "point": { + "x": 129, + "y": 79, + "wfo": "CAR" + } + }, + { + "city": "El Centro", + "lat": 32.792, + "lon": -115.563, + "point": { + "x": 26, + "y": 46, + "wfo": "PSR" + } + }, + { + "city": "El Paso", + "lat": 31.7587, + "lon": -106.4869, + "point": { + "x": 99, + "y": 55, + "wfo": "EPZ" + } + }, + { + "city": "Eugene", + "lat": 44.0521, + "lon": -123.0867, + "point": { + "x": 84, + "y": 38, + "wfo": "PQR" + } + }, + { + "city": "Fargo", + "lat": 46.8772, + "lon": -96.7898, + "point": { + "x": 99, + "y": 56, + "wfo": "FGF" + } + }, + { + "city": "Flagstaff", + "lat": 35.1981, + "lon": -111.6513, + "point": { + "x": 73, + "y": 88, + "wfo": "FGZ" + } + }, + { + "city": "Fresno", + "lat": 36.7477, + "lon": -119.7724, + "point": { + "x": 53, + "y": 100, + "wfo": "HNX" + } + }, + { + "city": "Grand Junction", + "lat": 39.0639, + "lon": -108.5506, + "point": { + "x": 94, + "y": 101, + "wfo": "GJT" + } + }, + { + "city": "Grand Rapids", + "lat": 42.9634, + "lon": -85.6681, + "point": { + "x": 40, + "y": 46, + "wfo": "GRR" + } + }, + { + "city": "Havre", + "lat": 48.55, + "lon": -109.6841, + "point": { + "x": 154, + "y": 187, + "wfo": "TFX" + } + }, + { + "city": "Helena", + "lat": 46.5927, + "lon": -112.0361, + "point": { + "x": 68, + "y": 103, + "wfo": "TFX" + } + }, + { + "city": "Honolulu", + "lat": 21.3069, + "lon": -157.8583, + "point": { + "x": 153, + "y": 144, + "wfo": "HFO" + } + }, + { + "city": "Hot Springs", + "lat": 34.5037, + "lon": -93.0552, + "point": { + "x": 53, + "y": 60, + "wfo": "LZK" + } + }, + { + "city": "Idaho Falls", + "lat": 43.4666, + "lon": -112.0341, + "point": { + "x": 115, + "y": 72, + "wfo": "PIH" + } + }, + { + "city": "Jackson", + "lat": 32.2988, + "lon": -90.1848, + "point": { + "x": 75, + "y": 62, + "wfo": "JAN" + } + }, + { + "city": "Jacksonville", + "lat": 30.3322, + "lon": -81.6556, + "point": { + "x": 65, + "y": 64, + "wfo": "JAX" + } + }, + { + "city": "Juneau", + "lat": 58.3019, + "lon": -134.4197, + "point": { + "x": 194, + "y": 163, + "wfo": "AJK" + } + }, + { + "city": "Kansas City", + "lat": 39.1142, + "lon": -94.6275, + "point": { + "x": 41, + "y": 50, + "wfo": "EAX" + } + }, + { + "city": "Key West", + "lat": 24.5557, + "lon": -81.7826, + "point": { + "x": 61, + "y": 47, + "wfo": "KEY" + } + }, + { + "city": "Klamath Falls", + "lat": 42.2249, + "lon": -121.7817, + "point": { + "x": 141, + "y": 61, + "wfo": "MFR" + } + }, + { + "city": "Knoxville", + "lat": 35.9606, + "lon": -83.9207, + "point": { + "x": 71, + "y": 51, + "wfo": "MRX" + } + }, + { + "city": "Las Vegas", + "lat": 36.175, + "lon": -115.1372, + "point": { + "x": 122, + "y": 97, + "wfo": "VEF" + } + }, + { + "city": "Lewiston", + "lat": 46.4165, + "lon": -117.0177, + "point": { + "x": 144, + "y": 30, + "wfo": "OTX" + } + }, + { + "city": "Lincoln", + "lat": 40.8, + "lon": -96.667, + "point": { + "x": 56, + "y": 38, + "wfo": "OAX" + } + }, + { + "city": "Long Beach", + "lat": 33.767, + "lon": -118.1892, + "point": { + "x": 154, + "y": 31, + "wfo": "LOX" + } + }, + { + "city": "Louisville", + "lat": 38.2542, + "lon": -85.7594, + "point": { + "x": 49, + "y": 77, + "wfo": "LMK" + } + }, + { + "city": "Manchester", + "lat": 42.9956, + "lon": -71.4548, + "point": { + "x": 41, + "y": 20, + "wfo": "GYX" + } + }, + { + "city": "Memphis", + "lat": 35.1495, + "lon": -90.049, + "point": { + "x": 41, + "y": 66, + "wfo": "MEG" + } + }, + { + "city": "Milwaukee", + "lat": 43.0389, + "lon": -87.9065, + "point": { + "x": 87, + "y": 64, + "wfo": "MKX" + } + }, + { + "city": "Mobile", + "lat": 30.6944, + "lon": -88.043, + "point": { + "x": 51, + "y": 66, + "wfo": "MOB" + } + }, + { + "city": "Montgomery", + "lat": 32.3668, + "lon": -86.3, + "point": { + "x": 80, + "y": 34, + "wfo": "BMX" + } + }, + { + "city": "Montpelier", + "lat": 44.2601, + "lon": -72.5754, + "point": { + "x": 110, + "y": 49, + "wfo": "BTV" + } + }, + { + "city": "Nashville", + "lat": 36.1659, + "lon": -86.7844, + "point": { + "x": 49, + "y": 56, + "wfo": "OHX" + } + }, + { + "city": "Newark", + "lat": 40.7357, + "lon": -74.1724, + "point": { + "x": 26, + "y": 34, + "wfo": "OKX" + } + }, + { + "city": "New Haven", + "lat": 41.3081, + "lon": -72.9282, + "point": { + "x": 65, + "y": 67, + "wfo": "OKX" + } + }, + { + "city": "New Orleans", + "lat": 29.9546, + "lon": -90.0751, + "point": { + "x": 68, + "y": 88, + "wfo": "LIX" + } + }, + { + "city": "Nome", + "lat": 64.5011, + "lon": -165.4064, + "point": { + "x": 217, + "y": 139, + "wfo": "AFG" + } + }, + { + "city": "Oklahoma City", + "lat": 35.4676, + "lon": -97.5164, + "point": { + "x": 97, + "y": 93, + "wfo": "OUN" + } + }, + { + "city": "Omaha", + "lat": 41.2586, + "lon": -95.9378, + "point": { + "x": 82, + "y": 59, + "wfo": "OAX" + } + }, + { + "city": "Phoenix", + "lat": 33.4484, + "lon": -112.074, + "point": { + "x": 158, + "y": 57, + "wfo": "PSR" + } + }, + { + "city": "Pierre", + "lat": 44.3683, + "lon": -100.351, + "point": { + "x": 54, + "y": 43, + "wfo": "ABR" + } + }, + { + "city": "Portland", + "lat": 43.6615, + "lon": -70.2553, + "point": { + "x": 75, + "y": 58, + "wfo": "GYX" + } + }, + { + "city": "Portland", + "lat": 45.5234, + "lon": -122.6762, + "point": { + "x": 112, + "y": 103, + "wfo": "PQR" + } + }, + { + "city": "Providence", + "lat": 41.824, + "lon": -71.4128, + "point": { + "x": 64, + "y": 64, + "wfo": "BOX" + } + }, + { + "city": "Raleigh", + "lat": 35.7721, + "lon": -78.6386, + "point": { + "x": 74, + "y": 56, + "wfo": "RAH" + } + }, + { + "city": "Reno", + "lat": 39.4986, + "lon": -119.7681, + "point": { + "x": 45, + "y": 104, + "wfo": "REV" + } + }, + { + "city": "Richfield", + "lat": 38.7725, + "lon": -112.0841, + "point": { + "x": 81, + "y": 86, + "wfo": "SLC" + } + }, + { + "city": "Richmond", + "lat": 37.5538, + "lon": -77.4603, + "point": { + "x": 44, + "y": 76, + "wfo": "AKQ" + } + }, + { + "city": "Roanoke", + "lat": 37.271, + "lon": -79.9414, + "point": { + "x": 73, + "y": 68, + "wfo": "RNK" + } + }, + { + "city": "Sacramento", + "lat": 38.5816, + "lon": -121.4944, + "point": { + "x": 40, + "y": 67, + "wfo": "STO" + } + }, + { + "city": "Salt Lake City", + "lat": 40.7608, + "lon": -111.891, + "point": { + "x": 99, + "y": 174, + "wfo": "SLC" + } + }, + { + "city": "San Antonio", + "lat": 29.4241, + "lon": -98.4936, + "point": { + "x": 125, + "y": 53, + "wfo": "EWX" + } + }, + { + "city": "San Diego", + "lat": 32.7153, + "lon": -117.1573, + "point": { + "x": 56, + "y": 13, + "wfo": "SGX" + } + }, + { + "city": "San Jose", + "lat": 37.3394, + "lon": -121.895, + "point": { + "x": 99, + "y": 82, + "wfo": "MTR" + } + }, + { + "city": "Santa Fe", + "lat": 35.687, + "lon": -105.9378, + "point": { + "x": 125, + "y": 143, + "wfo": "ABQ" + } + }, + { + "city": "Savannah", + "lat": 32.0835, + "lon": -81.0998, + "point": { + "x": 46, + "y": 40, + "wfo": "CHS" + } + }, + { + "city": "Shreveport", + "lat": 32.5251, + "lon": -93.7502, + "point": { + "x": 76, + "y": 69, + "wfo": "SHV" + } + }, + { + "city": "Sioux Falls", + "lat": 43.55, + "lon": -96.7003, + "point": { + "x": 99, + "y": 65, + "wfo": "FSD" + } + }, + { + "city": "Sitka", + "lat": 57.0531, + "lon": -135.33, + "point": { + "x": 188, + "y": 112, + "wfo": "AJK" + } + }, + { + "city": "Spokane", + "lat": 47.6597, + "lon": -117.4291, + "point": { + "x": 140, + "y": 90, + "wfo": "OTX" + } + }, + { + "city": "Springfield", + "lat": 39.8017, + "lon": -89.6437, + "point": { + "x": 47, + "y": 55, + "wfo": "ILX" + } + }, + { + "city": "Springfield", + "lat": 42.1015, + "lon": -72.5898, + "point": { + "x": 22, + "y": 69, + "wfo": "BOX" + } + }, + { + "city": "Springfield", + "lat": 37.2153, + "lon": -93.2982, + "point": { + "x": 66, + "y": 34, + "wfo": "SGF" + } + }, + { + "city": "Toledo", + "lat": 41.6639, + "lon": -83.5552, + "point": { + "x": 18, + "y": 66, + "wfo": "CLE" + } + }, + { + "city": "Tulsa", + "lat": 36.154, + "lon": -95.9928, + "point": { + "x": 40, + "y": 104, + "wfo": "TSA" + } + }, + { + "city": "Virginia Beach", + "lat": 36.8529, + "lon": -75.978, + "point": { + "x": 100, + "y": 52, + "wfo": "AKQ" + } + }, + { + "city": "Wichita", + "lat": 37.6922, + "lon": -97.3375, + "point": { + "x": 61, + "y": 33, + "wfo": "ICT" + } + }, + { + "city": "Wilmington", + "lat": 34.2257, + "lon": -77.9447, + "point": { + "x": 88, + "y": 67, + "wfo": "ILM" + } + }, + { + "city": "Tuscan", + "lat": 32.2216, + "lon": -110.9698, + "point": { + "x": 90, + "y": 48, + "wfo": "TWC" + } + } +] \ No newline at end of file diff --git a/datagenerators/output/travelcities.json b/datagenerators/output/travelcities.json new file mode 100644 index 0000000..ba6f654 --- /dev/null +++ b/datagenerators/output/travelcities.json @@ -0,0 +1,242 @@ +[ + { + "Name": "Atlanta", + "Latitude": 33.749, + "Longitude": -84.388, + "point": { + "x": 50, + "y": 86, + "wfo": "FFC" + } + }, + { + "Name": "Boston", + "Latitude": 42.3584, + "Longitude": -71.0598, + "point": { + "x": 71, + "y": 90, + "wfo": "BOX" + } + }, + { + "Name": "Chicago", + "Latitude": 41.9796, + "Longitude": -87.9045, + "point": { + "x": 65, + "y": 76, + "wfo": "LOT" + } + }, + { + "Name": "Cleveland", + "Latitude": 41.4995, + "Longitude": -81.6954, + "point": { + "x": 82, + "y": 64, + "wfo": "CLE" + } + }, + { + "Name": "Dallas", + "Latitude": 32.8959, + "Longitude": -97.0372, + "point": { + "x": 79, + "y": 108, + "wfo": "FWD" + } + }, + { + "Name": "Denver", + "Latitude": 39.7391, + "Longitude": -104.9847, + "point": { + "x": 62, + "y": 60, + "wfo": "BOU" + } + }, + { + "Name": "Detroit", + "Latitude": 42.3314, + "Longitude": -83.0457, + "point": { + "x": 65, + "y": 33, + "wfo": "DTX" + } + }, + { + "Name": "Hartford", + "Latitude": 41.7637, + "Longitude": -72.6851, + "point": { + "x": 21, + "y": 54, + "wfo": "BOX" + } + }, + { + "Name": "Houston", + "Latitude": 29.7633, + "Longitude": -95.3633, + "point": { + "x": 65, + "y": 97, + "wfo": "HGX" + } + }, + { + "Name": "Indianapolis", + "Latitude": 39.7684, + "Longitude": -86.158, + "point": { + "x": 57, + "y": 68, + "wfo": "IND" + } + }, + { + "Name": "Los Angeles", + "Latitude": 34.0522, + "Longitude": -118.2437, + "point": { + "x": 154, + "y": 44, + "wfo": "LOX" + } + }, + { + "Name": "Miami", + "Latitude": 25.7743, + "Longitude": -80.1937, + "point": { + "x": 109, + "y": 50, + "wfo": "MFL" + } + }, + { + "Name": "Minneapolis", + "Latitude": 44.98, + "Longitude": -93.2638, + "point": { + "x": 107, + "y": 71, + "wfo": "MPX" + } + }, + { + "Name": "New York", + "Latitude": 40.7142, + "Longitude": -74.0059, + "point": { + "x": 32, + "y": 34, + "wfo": "OKX" + } + }, + { + "Name": "Norfolk", + "Latitude": 36.8468, + "Longitude": -76.2852, + "point": { + "x": 89, + "y": 51, + "wfo": "AKQ" + } + }, + { + "Name": "Orlando", + "Latitude": 28.5383, + "Longitude": -81.3792, + "point": { + "x": 26, + "y": 68, + "wfo": "MLB" + } + }, + { + "Name": "Philadelphia", + "Latitude": 39.9523, + "Longitude": -75.1638, + "point": { + "x": 49, + "y": 75, + "wfo": "PHI" + } + }, + { + "Name": "Pittsburgh", + "Latitude": 40.4406, + "Longitude": -79.9959, + "point": { + "x": 77, + "y": 65, + "wfo": "PBZ" + } + }, + { + "Name": "St. Louis", + "Latitude": 38.6273, + "Longitude": -90.1979, + "point": { + "x": 94, + "y": 73, + "wfo": "LSX" + } + }, + { + "Name": "San Francisco", + "Latitude": 37.7749, + "Longitude": -122.4194, + "point": { + "x": 85, + "y": 105, + "wfo": "MTR" + } + }, + { + "Name": "Seattle", + "Latitude": 47.6062, + "Longitude": -122.3321, + "point": { + "x": 124, + "y": 67, + "wfo": "SEW" + } + }, + { + "Name": "Syracuse", + "Latitude": 43.0481, + "Longitude": -76.1474, + "point": { + "x": 51, + "y": 98, + "wfo": "BGM" + } + }, + { + "Name": "Tampa", + "Latitude": 27.9475, + "Longitude": -82.4584, + "point": { + "x": 70, + "y": 96, + "wfo": "TBW" + } + }, + { + "Name": "Washington DC", + "Latitude": 38.8951, + "Longitude": -77.0364, + "point": { + "x": 97, + "y": 71, + "wfo": "LWX" + } + } +] \ No newline at end of file diff --git a/datagenerators/regionalcities-raw.json b/datagenerators/regionalcities-raw.json new file mode 100644 index 0000000..6963742 --- /dev/null +++ b/datagenerators/regionalcities-raw.json @@ -0,0 +1,582 @@ +[ + { + "city": "Atlanta", + "lat": 33.749, + "lon": -84.388 + }, + { + "city": "Boston", + "lat": 42.3584, + "lon": -71.0598 + }, + { + "city": "Chicago", + "lat": 41.9796, + "lon": -87.9045 + }, + { + "city": "Cleveland", + "lat": 41.4995, + "lon": -81.6954 + }, + { + "city": "Dallas", + "lat": 32.8959, + "lon": -97.0372 + }, + { + "city": "Denver", + "lat": 39.7391, + "lon": -104.9847 + }, + { + "city": "Detroit", + "lat": 42.3314, + "lon": -83.0457 + }, + { + "city": "Hartford", + "lat": 41.7637, + "lon": -72.6851 + }, + { + "city": "Houston", + "lat": 29.7633, + "lon": -95.3633 + }, + { + "city": "Indianapolis", + "lat": 39.7684, + "lon": -86.158 + }, + { + "city": "Los Angeles", + "lat": 34.0522, + "lon": -118.2437 + }, + { + "city": "Miami", + "lat": 25.7743, + "lon": -80.1937 + }, + { + "city": "Minneapolis", + "lat": 44.98, + "lon": -93.2638 + }, + { + "city": "New York", + "lat": 40.78, + "lon": -73.88 + }, + { + "city": "Norfolk", + "lat": 36.8468, + "lon": -76.2852 + }, + { + "city": "Orlando", + "lat": 28.5383, + "lon": -81.3792 + }, + { + "city": "Philadelphia", + "lat": 39.9523, + "lon": -75.1638 + }, + { + "city": "Pittsburgh", + "lat": 40.4406, + "lon": -79.9959 + }, + { + "city": "St. Louis", + "lat": 38.6273, + "lon": -90.1979 + }, + { + "city": "San Francisco", + "lat": 37.6148, + "lon": -122.3918 + }, + { + "city": "Seattle", + "lat": 47.6062, + "lon": -122.3321 + }, + { + "city": "Syracuse", + "lat": 43.0481, + "lon": -76.1474 + }, + { + "city": "Tampa", + "lat": 27.9756, + "lon": -82.5329 + }, + { + "city": "Washington DC", + "lat": 38.8951, + "lon": -77.0364 + }, + { + "city": "Albany", + "lat": 42.6526, + "lon": -73.7562 + }, + { + "city": "Albuquerque", + "lat": 35.0845, + "lon": -106.6511 + }, + { + "city": "Amarillo", + "lat": 35.222, + "lon": -101.8313 + }, + { + "city": "Anchorage", + "lat": 61.2181, + "lon": -149.9003 + }, + { + "city": "Austin", + "lat": 30.2671, + "lon": -97.7431 + }, + { + "city": "Baker", + "lat": 44.7502, + "lon": -117.6677 + }, + { + "city": "Baltimore", + "lat": 39.2904, + "lon": -76.6122 + }, + { + "city": "Bangor", + "lat": 44.8012, + "lon": -68.7778 + }, + { + "city": "Birmingham", + "lat": 33.5207, + "lon": -86.8025 + }, + { + "city": "Bismarck", + "lat": 46.8083, + "lon": -100.7837 + }, + { + "city": "Boise", + "lat": 43.6135, + "lon": -116.2034 + }, + { + "city": "Buffalo", + "lat": 42.8864, + "lon": -78.8784 + }, + { + "city": "Carlsbad", + "lat": 32.4207, + "lon": -104.2288 + }, + { + "city": "Charleston", + "lat": 32.7766, + "lon": -79.9309 + }, + { + "city": "Charleston", + "lat": 38.3498, + "lon": -81.6326 + }, + { + "city": "Charlotte", + "lat": 35.2271, + "lon": -80.8431 + }, + { + "city": "Cheyenne", + "lat": 41.14, + "lon": -104.8202 + }, + { + "city": "Cincinnati", + "lat": 39.162, + "lon": -84.4569 + }, + { + "city": "Columbia", + "lat": 34.0007, + "lon": -81.0348 + }, + { + "city": "Columbus", + "lat": 39.9612, + "lon": -82.9988 + }, + { + "city": "Des Moines", + "lat": 41.6005, + "lon": -93.6091 + }, + { + "city": "Dubuque", + "lat": 42.5006, + "lon": -90.6646 + }, + { + "city": "Duluth", + "lat": 46.7833, + "lon": -92.1066 + }, + { + "city": "Eastport", + "lat": 44.9062, + "lon": -66.99 + }, + { + "city": "El Centro", + "lat": 32.792, + "lon": -115.563 + }, + { + "city": "El Paso", + "lat": 31.7587, + "lon": -106.4869 + }, + { + "city": "Eugene", + "lat": 44.0521, + "lon": -123.0867 + }, + { + "city": "Fargo", + "lat": 46.8772, + "lon": -96.7898 + }, + { + "city": "Flagstaff", + "lat": 35.1981, + "lon": -111.6513 + }, + { + "city": "Fresno", + "lat": 36.7477, + "lon": -119.7724 + }, + { + "city": "Grand Junction", + "lat": 39.0639, + "lon": -108.5506 + }, + { + "city": "Grand Rapids", + "lat": 42.9634, + "lon": -85.6681 + }, + { + "city": "Havre", + "lat": 48.55, + "lon": -109.6841 + }, + { + "city": "Helena", + "lat": 46.5927, + "lon": -112.0361 + }, + { + "city": "Honolulu", + "lat": 21.3069, + "lon": -157.8583 + }, + { + "city": "Hot Springs", + "lat": 34.5037, + "lon": -93.0552 + }, + { + "city": "Idaho Falls", + "lat": 43.4666, + "lon": -112.0341 + }, + { + "city": "Jackson", + "lat": 32.2988, + "lon": -90.1848 + }, + { + "city": "Jacksonville", + "lat": 30.3322, + "lon": -81.6556 + }, + { + "city": "Juneau", + "lat": 58.3019, + "lon": -134.4197 + }, + { + "city": "Kansas City", + "lat": 39.1142, + "lon": -94.6275 + }, + { + "city": "Key West", + "lat": 24.5557, + "lon": -81.7826 + }, + { + "city": "Klamath Falls", + "lat": 42.2249, + "lon": -121.7817 + }, + { + "city": "Knoxville", + "lat": 35.9606, + "lon": -83.9207 + }, + { + "city": "Las Vegas", + "lat": 36.175, + "lon": -115.1372 + }, + { + "city": "Lewiston", + "lat": 46.4165, + "lon": -117.0177 + }, + { + "city": "Lincoln", + "lat": 40.8, + "lon": -96.667 + }, + { + "city": "Long Beach", + "lat": 33.767, + "lon": -118.1892 + }, + { + "city": "Louisville", + "lat": 38.2542, + "lon": -85.7594 + }, + { + "city": "Manchester", + "lat": 42.9956, + "lon": -71.4548 + }, + { + "city": "Memphis", + "lat": 35.1495, + "lon": -90.049 + }, + { + "city": "Milwaukee", + "lat": 43.0389, + "lon": -87.9065 + }, + { + "city": "Mobile", + "lat": 30.6944, + "lon": -88.043 + }, + { + "city": "Montgomery", + "lat": 32.3668, + "lon": -86.3 + }, + { + "city": "Montpelier", + "lat": 44.2601, + "lon": -72.5754 + }, + { + "city": "Nashville", + "lat": 36.1659, + "lon": -86.7844 + }, + { + "city": "Newark", + "lat": 40.7357, + "lon": -74.1724 + }, + { + "city": "New Haven", + "lat": 41.3081, + "lon": -72.9282 + }, + { + "city": "New Orleans", + "lat": 29.9546, + "lon": -90.0751 + }, + { + "city": "Nome", + "lat": 64.5011, + "lon": -165.4064 + }, + { + "city": "Oklahoma City", + "lat": 35.4676, + "lon": -97.5164 + }, + { + "city": "Omaha", + "lat": 41.2586, + "lon": -95.9378 + }, + { + "city": "Phoenix", + "lat": 33.4484, + "lon": -112.074 + }, + { + "city": "Pierre", + "lat": 44.3683, + "lon": -100.351 + }, + { + "city": "Portland", + "lat": 43.6615, + "lon": -70.2553 + }, + { + "city": "Portland", + "lat": 45.5234, + "lon": -122.6762 + }, + { + "city": "Providence", + "lat": 41.824, + "lon": -71.4128 + }, + { + "city": "Raleigh", + "lat": 35.7721, + "lon": -78.6386 + }, + { + "city": "Reno", + "lat": 39.4986, + "lon": -119.7681 + }, + { + "city": "Richfield", + "lat": 38.7725, + "lon": -112.0841 + }, + { + "city": "Richmond", + "lat": 37.5538, + "lon": -77.4603 + }, + { + "city": "Roanoke", + "lat": 37.271, + "lon": -79.9414 + }, + { + "city": "Sacramento", + "lat": 38.5816, + "lon": -121.4944 + }, + { + "city": "Salt Lake City", + "lat": 40.7608, + "lon": -111.891 + }, + { + "city": "San Antonio", + "lat": 29.4241, + "lon": -98.4936 + }, + { + "city": "San Diego", + "lat": 32.7153, + "lon": -117.1573 + }, + { + "city": "San Jose", + "lat": 37.3394, + "lon": -121.895 + }, + { + "city": "Santa Fe", + "lat": 35.687, + "lon": -105.9378 + }, + { + "city": "Savannah", + "lat": 32.0835, + "lon": -81.0998 + }, + { + "city": "Shreveport", + "lat": 32.5251, + "lon": -93.7502 + }, + { + "city": "Sioux Falls", + "lat": 43.55, + "lon": -96.7003 + }, + { + "city": "Sitka", + "lat": 57.0531, + "lon": -135.33 + }, + { + "city": "Spokane", + "lat": 47.6597, + "lon": -117.4291 + }, + { + "city": "Springfield", + "lat": 39.8017, + "lon": -89.6437 + }, + { + "city": "Springfield", + "lat": 42.1015, + "lon": -72.5898 + }, + { + "city": "Springfield", + "lat": 37.2153, + "lon": -93.2982 + }, + { + "city": "Toledo", + "lat": 41.6639, + "lon": -83.5552 + }, + { + "city": "Tulsa", + "lat": 36.154, + "lon": -95.9928 + }, + { + "city": "Virginia Beach", + "lat": 36.8529, + "lon": -75.978 + }, + { + "city": "Wichita", + "lat": 37.6922, + "lon": -97.3375 + }, + { + "city": "Wilmington", + "lat": 34.2257, + "lon": -77.9447 + }, + { + "city": "Tuscan", + "lat": 32.2216, + "lon": -110.9698 + } +] \ No newline at end of file diff --git a/datagenerators/regionalcities.js b/datagenerators/regionalcities.js new file mode 100644 index 0000000..b8d6a37 --- /dev/null +++ b/datagenerators/regionalcities.js @@ -0,0 +1,41 @@ +// look up points for each regional city +const fs = require('fs/promises'); +const chunk = require('./chunk'); +const https = require('./https'); + +(async () => { + // source data + const regionalCities = JSON.parse(await fs.readFile('./datagenerators/regionalcities-raw.json')); + + const result = []; + const dataChunks = chunk(regionalCities, 5); + + // for loop intentional for use of await + // this keeps the api from getting overwhelmed + for (let i = 0; i < dataChunks.length; i += 1) { + const cityChunk = dataChunks[i]; + + // eslint-disable-next-line no-await-in-loop + const chunkResult = await Promise.all(cityChunk.map(async (city) => { + try { + const data = await https(`https://api.weather.gov/points/${city.lat},${city.lon}`); + const point = JSON.parse(data); + return { + ...city, + point: { + x: point.properties.gridX, + y: point.properties.gridY, + wfo: point.properties.gridId, + }, + }; + } catch (e) { + console.error(e); + return city; + } + })); + + result.push(...chunkResult); + } + + await fs.writeFile('./datagenerators/output/regionalcities.json', JSON.stringify(result, null, ' ')); +})(); diff --git a/datagenerators/stations.js b/datagenerators/stations.js index 2ebfbcc..70064f2 100644 --- a/datagenerators/stations.js +++ b/datagenerators/stations.js @@ -1,9 +1,9 @@ // list all stations in a single file // only find stations with 4 letter codes -const https = require('./https'); const fs = require('fs'); const path = require('path'); +const https = require('./https'); // immediately invoked function so we can access async/await const start = async () => { @@ -11,7 +11,7 @@ const start = async () => { const states = ['AK', 'NC', 'VA', 'TX', 'GA', 'PR']; // const states = require('./stations-states.js'); - let output = {}; + const output = {}; // loop through states await Promise.all(states.map(async (state) => { try { @@ -19,9 +19,9 @@ const start = async () => { const stationsRaw = await https(`https://api.weather.gov/stations?state=${state}`); const stationsAll = JSON.parse(stationsRaw).features; // filter stations for 4 letter identifiers - const stations = stationsAll.filter(station => station.properties.stationIdentifier.match(/^[A-Z]{4}$/)); + const stations = stationsAll.filter((station) => station.properties.stationIdentifier.match(/^[A-Z]{4}$/)); // add each resulting station to the output - stations.forEach(station => { + stations.forEach((station) => { const id = station.properties.stationIdentifier; if (output[id]) { console.log(`Duplicate station: ${state}-${id}`); @@ -30,7 +30,7 @@ const start = async () => { output[id] = { id, city: station.properties.name, - state: state, + state, lat: station.geometry.coordinates[1], lon: station.geometry.coordinates[0], }; @@ -44,11 +44,9 @@ const start = async () => { // write the output fs.writeFileSync(path.join(__dirname, 'output/stations.js'), JSON.stringify(output, null, 2)); - }; // immediately invoked function allows access to async (async () => { await start(); })(); - diff --git a/datagenerators/travelcities-raw.json b/datagenerators/travelcities-raw.json new file mode 100644 index 0000000..30bdcc0 --- /dev/null +++ b/datagenerators/travelcities-raw.json @@ -0,0 +1,122 @@ +[ + { + "Name": "Atlanta", + "Latitude": 33.749, + "Longitude": -84.388 + }, + { + "Name": "Boston", + "Latitude": 42.3584, + "Longitude": -71.0598 + }, + { + "Name": "Chicago", + "Latitude": 41.9796, + "Longitude": -87.9045 + }, + { + "Name": "Cleveland", + "Latitude": 41.4995, + "Longitude": -81.6954 + }, + { + "Name": "Dallas", + "Latitude": 32.8959, + "Longitude": -97.0372 + }, + { + "Name": "Denver", + "Latitude": 39.7391, + "Longitude": -104.9847 + }, + { + "Name": "Detroit", + "Latitude": 42.3314, + "Longitude": -83.0457 + }, + { + "Name": "Hartford", + "Latitude": 41.7637, + "Longitude": -72.6851 + }, + { + "Name": "Houston", + "Latitude": 29.7633, + "Longitude": -95.3633 + }, + { + "Name": "Indianapolis", + "Latitude": 39.7684, + "Longitude": -86.158 + }, + { + "Name": "Los Angeles", + "Latitude": 34.0522, + "Longitude": -118.2437 + }, + { + "Name": "Miami", + "Latitude": 25.7743, + "Longitude": -80.1937 + }, + { + "Name": "Minneapolis", + "Latitude": 44.98, + "Longitude": -93.2638 + }, + { + "Name": "New York", + "Latitude": 40.7142, + "Longitude": -74.0059 + }, + { + "Name": "Norfolk", + "Latitude": 36.8468, + "Longitude": -76.2852 + }, + { + "Name": "Orlando", + "Latitude": 28.5383, + "Longitude": -81.3792 + }, + { + "Name": "Philadelphia", + "Latitude": 39.9523, + "Longitude": -75.1638 + }, + { + "Name": "Pittsburgh", + "Latitude": 40.4406, + "Longitude": -79.9959 + }, + { + "Name": "St. Louis", + "Latitude": 38.6273, + "Longitude": -90.1979 + }, + { + "Name": "San Francisco", + "Latitude": 37.7749, + "Longitude": -122.4194 + }, + { + "Name": "Seattle", + "Latitude": 47.6062, + "Longitude": -122.3321 + }, + { + "Name": "Syracuse", + "Latitude": 43.0481, + "Longitude": -76.1474 + }, + { + "Name": "Tampa", + "Latitude": 27.9475, + "Longitude": -82.4584 + }, + { + "Name": "Washington DC", + "Latitude": 38.8951, + "Longitude": -77.0364 + } +] \ No newline at end of file diff --git a/datagenerators/travelcities.js b/datagenerators/travelcities.js new file mode 100644 index 0000000..6e39119 --- /dev/null +++ b/datagenerators/travelcities.js @@ -0,0 +1,41 @@ +// look up points for each travel city +const fs = require('fs/promises'); +const chunk = require('./chunk'); +const https = require('./https'); + +(async () => { + // source data + const travelCities = JSON.parse(await fs.readFile('./datagenerators/travelcities-raw.json')); + + const result = []; + const dataChunks = chunk(travelCities, 5); + + // for loop intentional for use of await + // this keeps the api from getting overwhelmed + for (let i = 0; i < dataChunks.length; i += 1) { + const cityChunk = dataChunks[i]; + + // eslint-disable-next-line no-await-in-loop + const chunkResult = await Promise.all(cityChunk.map(async (city) => { + try { + const data = await https(`https://api.weather.gov/points/${city.Latitude},${city.Longitude}`); + const point = JSON.parse(data); + return { + ...city, + point: { + x: point.properties.gridX, + y: point.properties.gridY, + wfo: point.properties.gridId, + }, + }; + } catch (e) { + console.error(e); + return city; + } + })); + + result.push(...chunkResult); + } + + await fs.writeFile('./datagenerators/output/travelcities.json', JSON.stringify(result, null, ' ')); +})(); diff --git a/server/scripts/data/regionalcities.js b/server/scripts/data/regionalcities.js index b88cd7e..9ba6632 100644 --- a/server/scripts/data/regionalcities.js +++ b/server/scripts/data/regionalcities.js @@ -4,580 +4,1160 @@ const RegionalCities = [ city: 'Atlanta', lat: 33.749, lon: -84.388, + point: { + x: 50, + y: 86, + wfo: 'FFC', + }, }, { city: 'Boston', lat: 42.3584, lon: -71.0598, + point: { + x: 71, + y: 90, + wfo: 'BOX', + }, }, { city: 'Chicago', lat: 41.9796, lon: -87.9045, + point: { + x: 65, + y: 76, + wfo: 'LOT', + }, }, { city: 'Cleveland', lat: 41.4995, lon: -81.6954, + point: { + x: 82, + y: 64, + wfo: 'CLE', + }, }, { city: 'Dallas', lat: 32.8959, lon: -97.0372, + point: { + x: 79, + y: 108, + wfo: 'FWD', + }, }, { city: 'Denver', lat: 39.7391, lon: -104.9847, + point: { + x: 62, + y: 60, + wfo: 'BOU', + }, }, { city: 'Detroit', lat: 42.3314, lon: -83.0457, + point: { + x: 65, + y: 33, + wfo: 'DTX', + }, }, { city: 'Hartford', lat: 41.7637, lon: -72.6851, + point: { + x: 21, + y: 54, + wfo: 'BOX', + }, }, { city: 'Houston', lat: 29.7633, lon: -95.3633, + point: { + x: 65, + y: 97, + wfo: 'HGX', + }, }, { city: 'Indianapolis', lat: 39.7684, lon: -86.158, + point: { + x: 57, + y: 68, + wfo: 'IND', + }, }, { city: 'Los Angeles', lat: 34.0522, lon: -118.2437, + point: { + x: 154, + y: 44, + wfo: 'LOX', + }, }, { city: 'Miami', lat: 25.7743, lon: -80.1937, + point: { + x: 109, + y: 50, + wfo: 'MFL', + }, }, { city: 'Minneapolis', lat: 44.98, lon: -93.2638, + point: { + x: 107, + y: 71, + wfo: 'MPX', + }, }, { city: 'New York', lat: 40.78, lon: -73.88, + point: { + x: 36, + y: 38, + wfo: 'OKX', + }, }, { city: 'Norfolk', lat: 36.8468, lon: -76.2852, + point: { + x: 89, + y: 51, + wfo: 'AKQ', + }, }, { city: 'Orlando', lat: 28.5383, lon: -81.3792, + point: { + x: 26, + y: 68, + wfo: 'MLB', + }, }, { city: 'Philadelphia', lat: 39.9523, lon: -75.1638, + point: { + x: 49, + y: 75, + wfo: 'PHI', + }, }, { city: 'Pittsburgh', lat: 40.4406, lon: -79.9959, + point: { + x: 77, + y: 65, + wfo: 'PBZ', + }, }, { city: 'St. Louis', lat: 38.6273, lon: -90.1979, + point: { + x: 94, + y: 73, + wfo: 'LSX', + }, }, { city: 'San Francisco', lat: 37.6148, lon: -122.3918, + point: { + x: 84, + y: 98, + wfo: 'MTR', + }, }, { city: 'Seattle', lat: 47.6062, lon: -122.3321, + point: { + x: 124, + y: 67, + wfo: 'SEW', + }, }, { city: 'Syracuse', lat: 43.0481, lon: -76.1474, + point: { + x: 51, + y: 98, + wfo: 'BGM', + }, }, { city: 'Tampa', lat: 27.9756, lon: -82.5329, + point: { + x: 67, + y: 97, + wfo: 'TBW', + }, }, { city: 'Washington DC', lat: 38.8951, lon: -77.0364, + point: { + x: 97, + y: 71, + wfo: 'LWX', + }, }, { city: 'Albany', lat: 42.6526, lon: -73.7562, + point: { + x: 58, + y: 58, + wfo: 'ALY', + }, }, { city: 'Albuquerque', lat: 35.0845, lon: -106.6511, + point: { + x: 97, + y: 118, + wfo: 'ABQ', + }, }, { city: 'Amarillo', lat: 35.222, lon: -101.8313, + point: { + x: 47, + y: 25, + wfo: 'AMA', + }, }, { city: 'Anchorage', lat: 61.2181, lon: -149.9003, + point: { + x: 125, + y: 236, + wfo: 'AER', + }, }, { city: 'Austin', lat: 30.2671, lon: -97.7431, + point: { + x: 155, + y: 90, + wfo: 'EWX', + }, }, { city: 'Baker', lat: 44.7502, lon: -117.6677, + point: { + x: 93, + y: 145, + wfo: 'BOI', + }, }, { city: 'Baltimore', lat: 39.2904, lon: -76.6122, + point: { + x: 109, + y: 91, + wfo: 'LWX', + }, }, { city: 'Bangor', lat: 44.8012, lon: -68.7778, + point: { + x: 72, + y: 62, + wfo: 'CAR', + }, }, { city: 'Birmingham', lat: 33.5207, lon: -86.8025, + point: { + x: 58, + y: 83, + wfo: 'BMX', + }, }, { city: 'Bismarck', lat: 46.8083, lon: -100.7837, + point: { + x: 109, + y: 46, + wfo: 'BIS', + }, }, { city: 'Boise', lat: 43.6135, lon: -116.2034, + point: { + x: 132, + y: 85, + wfo: 'BOI', + }, }, { city: 'Buffalo', lat: 42.8864, lon: -78.8784, + point: { + x: 35, + y: 46, + wfo: 'BUF', + }, }, { city: 'Carlsbad', lat: 32.4207, lon: -104.2288, + point: { + x: 44, + y: 156, + wfo: 'MAF', + }, }, { city: 'Charleston', lat: 32.7766, lon: -79.9309, + point: { + x: 86, + y: 76, + wfo: 'CHS', + }, }, { city: 'Charleston', lat: 38.3498, lon: -81.6326, + point: { + x: 62, + y: 66, + wfo: 'RLX', + }, }, { city: 'Charlotte', lat: 35.2271, lon: -80.8431, + point: { + x: 118, + y: 64, + wfo: 'GSP', + }, }, { city: 'Cheyenne', lat: 41.14, lon: -104.8202, + point: { + x: 109, + y: 13, + wfo: 'CYS', + }, }, { city: 'Cincinnati', lat: 39.162, lon: -84.4569, + point: { + x: 36, + y: 40, + wfo: 'ILN', + }, }, { city: 'Columbia', lat: 34.0007, lon: -81.0348, + point: { + x: 65, + y: 61, + wfo: 'CAE', + }, }, { city: 'Columbus', lat: 39.9612, lon: -82.9988, + point: { + x: 84, + y: 80, + wfo: 'ILN', + }, }, { city: 'Des Moines', lat: 41.6005, lon: -93.6091, + point: { + x: 73, + y: 49, + wfo: 'DMX', + }, }, { city: 'Dubuque', lat: 42.5006, lon: -90.6646, + point: { + x: 62, + y: 110, + wfo: 'DVN', + }, }, { city: 'Duluth', lat: 46.7833, lon: -92.1066, + point: { + x: 91, + y: 69, + wfo: 'DLH', + }, }, { city: 'Eastport', lat: 44.9062, lon: -66.99, + point: { + x: 129, + y: 79, + wfo: 'CAR', + }, }, { city: 'El Centro', lat: 32.792, lon: -115.563, + point: { + x: 26, + y: 46, + wfo: 'PSR', + }, }, { city: 'El Paso', lat: 31.7587, lon: -106.4869, + point: { + x: 99, + y: 55, + wfo: 'EPZ', + }, }, { city: 'Eugene', lat: 44.0521, lon: -123.0867, + point: { + x: 84, + y: 38, + wfo: 'PQR', + }, }, { city: 'Fargo', lat: 46.8772, lon: -96.7898, + point: { + x: 99, + y: 56, + wfo: 'FGF', + }, }, { city: 'Flagstaff', lat: 35.1981, lon: -111.6513, + point: { + x: 73, + y: 88, + wfo: 'FGZ', + }, }, { city: 'Fresno', lat: 36.7477, lon: -119.7724, + point: { + x: 53, + y: 100, + wfo: 'HNX', + }, }, { city: 'Grand Junction', lat: 39.0639, lon: -108.5506, + point: { + x: 94, + y: 101, + wfo: 'GJT', + }, }, { city: 'Grand Rapids', lat: 42.9634, lon: -85.6681, + point: { + x: 40, + y: 46, + wfo: 'GRR', + }, }, { city: 'Havre', lat: 48.55, lon: -109.6841, + point: { + x: 154, + y: 187, + wfo: 'TFX', + }, }, { city: 'Helena', lat: 46.5927, lon: -112.0361, + point: { + x: 68, + y: 103, + wfo: 'TFX', + }, }, { city: 'Honolulu', lat: 21.3069, lon: -157.8583, + point: { + x: 153, + y: 144, + wfo: 'HFO', + }, }, { city: 'Hot Springs', lat: 34.5037, lon: -93.0552, + point: { + x: 53, + y: 60, + wfo: 'LZK', + }, }, { city: 'Idaho Falls', lat: 43.4666, lon: -112.0341, + point: { + x: 115, + y: 72, + wfo: 'PIH', + }, }, { city: 'Jackson', lat: 32.2988, lon: -90.1848, + point: { + x: 75, + y: 62, + wfo: 'JAN', + }, }, { city: 'Jacksonville', lat: 30.3322, lon: -81.6556, + point: { + x: 65, + y: 64, + wfo: 'JAX', + }, }, { city: 'Juneau', lat: 58.3019, lon: -134.4197, + point: { + x: 194, + y: 163, + wfo: 'AJK', + }, }, { city: 'Kansas City', lat: 39.1142, lon: -94.6275, + point: { + x: 41, + y: 50, + wfo: 'EAX', + }, }, { city: 'Key West', lat: 24.5557, lon: -81.7826, + point: { + x: 61, + y: 47, + wfo: 'KEY', + }, }, { city: 'Klamath Falls', lat: 42.2249, lon: -121.7817, + point: { + x: 141, + y: 61, + wfo: 'MFR', + }, }, { city: 'Knoxville', lat: 35.9606, lon: -83.9207, + point: { + x: 71, + y: 51, + wfo: 'MRX', + }, }, { city: 'Las Vegas', lat: 36.175, lon: -115.1372, + point: { + x: 122, + y: 97, + wfo: 'VEF', + }, }, { city: 'Lewiston', lat: 46.4165, lon: -117.0177, + point: { + x: 144, + y: 30, + wfo: 'OTX', + }, }, { city: 'Lincoln', lat: 40.8, lon: -96.667, + point: { + x: 56, + y: 38, + wfo: 'OAX', + }, }, { city: 'Long Beach', lat: 33.767, lon: -118.1892, + point: { + x: 154, + y: 31, + wfo: 'LOX', + }, }, { city: 'Louisville', lat: 38.2542, lon: -85.7594, + point: { + x: 49, + y: 77, + wfo: 'LMK', + }, }, { city: 'Manchester', lat: 42.9956, lon: -71.4548, + point: { + x: 41, + y: 20, + wfo: 'GYX', + }, }, { city: 'Memphis', lat: 35.1495, lon: -90.049, + point: { + x: 41, + y: 66, + wfo: 'MEG', + }, }, { city: 'Milwaukee', lat: 43.0389, lon: -87.9065, + point: { + x: 87, + y: 64, + wfo: 'MKX', + }, }, { city: 'Mobile', lat: 30.6944, lon: -88.043, + point: { + x: 51, + y: 66, + wfo: 'MOB', + }, }, { city: 'Montgomery', lat: 32.3668, lon: -86.3, + point: { + x: 80, + y: 34, + wfo: 'BMX', + }, }, { city: 'Montpelier', lat: 44.2601, lon: -72.5754, + point: { + x: 110, + y: 49, + wfo: 'BTV', + }, }, { city: 'Nashville', lat: 36.1659, lon: -86.7844, + point: { + x: 49, + y: 56, + wfo: 'OHX', + }, }, { city: 'Newark', lat: 40.7357, lon: -74.1724, + point: { + x: 26, + y: 34, + wfo: 'OKX', + }, }, { city: 'New Haven', lat: 41.3081, lon: -72.9282, + point: { + x: 65, + y: 67, + wfo: 'OKX', + }, }, { city: 'New Orleans', lat: 29.9546, lon: -90.0751, + point: { + x: 68, + y: 88, + wfo: 'LIX', + }, }, { city: 'Nome', lat: 64.5011, lon: -165.4064, + point: { + x: 217, + y: 139, + wfo: 'AFG', + }, }, { city: 'Oklahoma City', lat: 35.4676, lon: -97.5164, + point: { + x: 97, + y: 93, + wfo: 'OUN', + }, }, { city: 'Omaha', lat: 41.2586, lon: -95.9378, + point: { + x: 82, + y: 59, + wfo: 'OAX', + }, }, { city: 'Phoenix', lat: 33.4484, lon: -112.074, + point: { + x: 158, + y: 57, + wfo: 'PSR', + }, }, { city: 'Pierre', lat: 44.3683, lon: -100.351, + point: { + x: 54, + y: 43, + wfo: 'ABR', + }, }, { city: 'Portland', lat: 43.6615, lon: -70.2553, + point: { + x: 75, + y: 58, + wfo: 'GYX', + }, }, { city: 'Portland', lat: 45.5234, lon: -122.6762, + point: { + x: 112, + y: 103, + wfo: 'PQR', + }, }, { city: 'Providence', lat: 41.824, lon: -71.4128, + point: { + x: 64, + y: 64, + wfo: 'BOX', + }, }, { city: 'Raleigh', lat: 35.7721, lon: -78.6386, + point: { + x: 74, + y: 56, + wfo: 'RAH', + }, }, { city: 'Reno', lat: 39.4986, lon: -119.7681, + point: { + x: 45, + y: 104, + wfo: 'REV', + }, }, { city: 'Richfield', lat: 38.7725, lon: -112.0841, + point: { + x: 81, + y: 86, + wfo: 'SLC', + }, }, { city: 'Richmond', lat: 37.5538, lon: -77.4603, + point: { + x: 44, + y: 76, + wfo: 'AKQ', + }, }, { city: 'Roanoke', lat: 37.271, lon: -79.9414, + point: { + x: 73, + y: 68, + wfo: 'RNK', + }, }, { city: 'Sacramento', lat: 38.5816, lon: -121.4944, + point: { + x: 40, + y: 67, + wfo: 'STO', + }, }, { city: 'Salt Lake City', lat: 40.7608, lon: -111.891, + point: { + x: 99, + y: 174, + wfo: 'SLC', + }, }, { city: 'San Antonio', lat: 29.4241, lon: -98.4936, + point: { + x: 125, + y: 53, + wfo: 'EWX', + }, }, { city: 'San Diego', lat: 32.7153, lon: -117.1573, + point: { + x: 56, + y: 13, + wfo: 'SGX', + }, }, { city: 'San Jose', lat: 37.3394, lon: -121.895, + point: { + x: 99, + y: 82, + wfo: 'MTR', + }, }, { city: 'Santa Fe', lat: 35.687, lon: -105.9378, + point: { + x: 125, + y: 143, + wfo: 'ABQ', + }, }, { city: 'Savannah', lat: 32.0835, lon: -81.0998, + point: { + x: 46, + y: 40, + wfo: 'CHS', + }, }, { city: 'Shreveport', lat: 32.5251, lon: -93.7502, + point: { + x: 76, + y: 69, + wfo: 'SHV', + }, }, { city: 'Sioux Falls', lat: 43.55, lon: -96.7003, + point: { + x: 99, + y: 65, + wfo: 'FSD', + }, }, { city: 'Sitka', lat: 57.0531, lon: -135.33, + point: { + x: 188, + y: 112, + wfo: 'AJK', + }, }, { city: 'Spokane', lat: 47.6597, lon: -117.4291, + point: { + x: 140, + y: 90, + wfo: 'OTX', + }, }, { city: 'Springfield', lat: 39.8017, lon: -89.6437, + point: { + x: 47, + y: 55, + wfo: 'ILX', + }, }, { city: 'Springfield', lat: 42.1015, lon: -72.5898, + point: { + x: 22, + y: 69, + wfo: 'BOX', + }, }, { city: 'Springfield', lat: 37.2153, lon: -93.2982, + point: { + x: 66, + y: 34, + wfo: 'SGF', + }, }, { city: 'Toledo', lat: 41.6639, lon: -83.5552, + point: { + x: 18, + y: 66, + wfo: 'CLE', + }, }, { city: 'Tulsa', lat: 36.154, lon: -95.9928, + point: { + x: 40, + y: 104, + wfo: 'TSA', + }, }, { city: 'Virginia Beach', lat: 36.8529, lon: -75.978, + point: { + x: 100, + y: 52, + wfo: 'AKQ', + }, }, { city: 'Wichita', lat: 37.6922, lon: -97.3375, + point: { + x: 61, + y: 33, + wfo: 'ICT', + }, }, { city: 'Wilmington', lat: 34.2257, lon: -77.9447, + point: { + x: 88, + y: 67, + wfo: 'ILM', + }, }, { city: 'Tuscan', lat: 32.2216, lon: -110.9698, + point: { + x: 90, + y: 48, + wfo: 'TWC', + }, }, ]; diff --git a/server/scripts/data/travelcities.js b/server/scripts/data/travelcities.js index 9755291..d9b0735 100644 --- a/server/scripts/data/travelcities.js +++ b/server/scripts/data/travelcities.js @@ -4,120 +4,240 @@ const TravelCities = [ Name: 'Atlanta', Latitude: 33.749, Longitude: -84.388, + point: { + x: 50, + y: 86, + wfo: 'FFC', + }, }, { Name: 'Boston', Latitude: 42.3584, Longitude: -71.0598, + point: { + x: 71, + y: 90, + wfo: 'BOX', + }, }, { Name: 'Chicago', Latitude: 41.9796, Longitude: -87.9045, + point: { + x: 65, + y: 76, + wfo: 'LOT', + }, }, { Name: 'Cleveland', Latitude: 41.4995, Longitude: -81.6954, + point: { + x: 82, + y: 64, + wfo: 'CLE', + }, }, { Name: 'Dallas', Latitude: 32.8959, Longitude: -97.0372, + point: { + x: 79, + y: 108, + wfo: 'FWD', + }, }, { Name: 'Denver', Latitude: 39.7391, Longitude: -104.9847, + point: { + x: 62, + y: 60, + wfo: 'BOU', + }, }, { Name: 'Detroit', Latitude: 42.3314, Longitude: -83.0457, + point: { + x: 65, + y: 33, + wfo: 'DTX', + }, }, { Name: 'Hartford', Latitude: 41.7637, Longitude: -72.6851, + point: { + x: 21, + y: 54, + wfo: 'BOX', + }, }, { Name: 'Houston', Latitude: 29.7633, Longitude: -95.3633, + point: { + x: 65, + y: 97, + wfo: 'HGX', + }, }, { Name: 'Indianapolis', Latitude: 39.7684, Longitude: -86.158, + point: { + x: 57, + y: 68, + wfo: 'IND', + }, }, { Name: 'Los Angeles', Latitude: 34.0522, Longitude: -118.2437, + point: { + x: 154, + y: 44, + wfo: 'LOX', + }, }, { Name: 'Miami', Latitude: 25.7743, Longitude: -80.1937, + point: { + x: 109, + y: 50, + wfo: 'MFL', + }, }, { Name: 'Minneapolis', Latitude: 44.98, Longitude: -93.2638, + point: { + x: 107, + y: 71, + wfo: 'MPX', + }, }, { Name: 'New York', Latitude: 40.7142, Longitude: -74.0059, + point: { + x: 32, + y: 34, + wfo: 'OKX', + }, }, { Name: 'Norfolk', Latitude: 36.8468, Longitude: -76.2852, + point: { + x: 89, + y: 51, + wfo: 'AKQ', + }, }, { Name: 'Orlando', Latitude: 28.5383, Longitude: -81.3792, + point: { + x: 26, + y: 68, + wfo: 'MLB', + }, }, { Name: 'Philadelphia', Latitude: 39.9523, Longitude: -75.1638, + point: { + x: 49, + y: 75, + wfo: 'PHI', + }, }, { Name: 'Pittsburgh', Latitude: 40.4406, Longitude: -79.9959, + point: { + x: 77, + y: 65, + wfo: 'PBZ', + }, }, { Name: 'St. Louis', Latitude: 38.6273, Longitude: -90.1979, + point: { + x: 94, + y: 73, + wfo: 'LSX', + }, }, { Name: 'San Francisco', Latitude: 37.7749, Longitude: -122.4194, + point: { + x: 85, + y: 105, + wfo: 'MTR', + }, }, { Name: 'Seattle', Latitude: 47.6062, Longitude: -122.3321, + point: { + x: 124, + y: 67, + wfo: 'SEW', + }, }, { Name: 'Syracuse', Latitude: 43.0481, Longitude: -76.1474, + point: { + x: 51, + y: 98, + wfo: 'BGM', + }, }, { Name: 'Tampa', Latitude: 27.9475, Longitude: -82.4584, + point: { + x: 70, + y: 96, + wfo: 'TBW', + }, }, { Name: 'Washington DC', Latitude: 38.8951, Longitude: -77.0364, + point: { + x: 97, + y: 71, + wfo: 'LWX', + }, }, ]; diff --git a/server/scripts/modules/regionalforecast.js b/server/scripts/modules/regionalforecast.js index 04d2722..2329a20 100644 --- a/server/scripts/modules/regionalforecast.js +++ b/server/scripts/modules/regionalforecast.js @@ -65,13 +65,12 @@ class RegionalForecast extends WeatherDisplay { // get regional forecasts and observations (the two are intertwined due to the design of api.weather.gov) const regionalDataAll = await Promise.all(regionalCities.map(async (city) => { try { - // get the point first, then break down into forecast and observations - const point = await utils.weather.getPoint(city.lat, city.lon); + if (!city.point) throw new Error('No pre-loaded point'); // start off the observation task - const observationPromise = RegionalForecast.getRegionalObservation(point, city); + const observationPromise = RegionalForecast.getRegionalObservation(city.point, city); - const forecast = await utils.fetch.json(point.properties.forecast); + const forecast = await utils.fetch.json(`https://api.weather.gov/gridpoints/${city.point.wfo}/${city.point.x},${city.point.y}/forecast`); // get XY on map for city const cityXY = RegionalForecast.getXYForCity(city, minMaxLatLon.maxLat, minMaxLatLon.minLon, weatherParameters.state); @@ -142,7 +141,7 @@ class RegionalForecast extends WeatherDisplay { static async getRegionalObservation(point, city) { try { // get stations - const stations = await utils.fetch.json(point.properties.observationStations); + const stations = await utils.fetch.json(`https://api.weather.gov/gridpoints/${city.point.wfo}/${city.point.x},${city.point.y}/stations`); // get the first station const station = stations.features[0].id; diff --git a/server/scripts/modules/travelforecast.js b/server/scripts/modules/travelforecast.js index dafe2d2..d39116a 100644 --- a/server/scripts/modules/travelforecast.js +++ b/server/scripts/modules/travelforecast.js @@ -29,8 +29,8 @@ class TravelForecast extends WeatherDisplay { const forecastPromises = TravelCities.map(async (city) => { try { // get point then forecast - const point = await utils.weather.getPoint(city.Latitude, city.Longitude); - const forecast = await utils.fetch.json(point.properties.forecast); + if (!city.point) throw new Error('No pre-loaded point'); + const forecast = await utils.fetch.json(`https://api.weather.gov/gridpoints/${city.point.wfo}/${city.point.x},${city.point.y}/forecast`); // determine today or tomorrow (shift periods by 1 if tomorrow) const todayShift = forecast.properties.periods[0].isDaytime ? 0 : 1; // return a pared-down forecast From 78b0c7043b3bdb183aa813e3404c1cb312c42b07 Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Tue, 22 Nov 2022 14:17:20 -0600 Subject: [PATCH 2/5] 5.1.0 --- package-lock.json | 6 +++--- package.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3fe7cbe..045dab0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ws4kp", - "version": "5.0.0", + "version": "5.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ws4kp", - "version": "5.0.0", + "version": "5.1.0", "license": "MIT", "dependencies": { "eslint": "^8.21.0", @@ -14182,4 +14182,4 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 754671e..5d680c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ws4kp", - "version": "5.0.0", + "version": "5.1.0", "description": "Welcome to the WeatherStar 4000+ project page!", "main": "index.js", "scripts": { @@ -44,4 +44,4 @@ "eslint": "^8.21.0", "eslint-plugin-import": "^2.26.0" } -} \ No newline at end of file +} From 28a57232f897f6755f52b63fbe82926b914ad797 Mon Sep 17 00:00:00 2001 From: Matt Walsh <51417385+netbymatt@users.noreply.github.com> Date: Tue, 6 Dec 2022 09:15:32 -0600 Subject: [PATCH 3/5] Create FUNDING.yml --- .github/FUNDING.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..1e36be8 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: ['https://buymeacoffee.com/temp.exp'] From c78c103111592461597a4d3f725e1cc3fcef261b Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Tue, 6 Dec 2022 10:11:13 -0600 Subject: [PATCH 4/5] add custom hook --- .gitignore | 3 +- package-lock.json | 377 ++++++++++++++-------------------------------- views/index.ejs | 2 + 3 files changed, 120 insertions(+), 262 deletions(-) diff --git a/.gitignore b/.gitignore index 9cc67f8..b60a6c6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -**/debug.log \ No newline at end of file +**/debug.log +server/scripts/custom.js \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 045dab0..2c0af88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -732,9 +732,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1254.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1254.0.tgz", - "integrity": "sha512-PDBSEskxckCwmfl9GVU+F6JZ9NusgO98DzRRqFv/PzQxkyw6vbdT6N/porUt+mFmGz3HjnGZLeZdywaDMtx7Dg==", + "version": "2.1268.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1268.0.tgz", + "integrity": "sha512-N2A42YrSMTDFCY5lU3QOJz+CZbGKIrAQS3We9+HjEeDP+FPE+M2H9Zzy8Mk18uC6v8bP3lbTTCpTTvtje6i+Pw==", "dev": true, "dependencies": { "buffer": "4.9.2", @@ -1135,9 +1135,9 @@ } }, "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -1446,9 +1446,9 @@ } }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, "engines": { "node": ">=0.10" @@ -1810,9 +1810,9 @@ } }, "node_modules/eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", + "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", "dependencies": { "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.11.6", @@ -2378,9 +2378,9 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", + "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", "dependencies": { "reusify": "^1.0.4" } @@ -2422,9 +2422,9 @@ } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -2775,16 +2775,6 @@ "node": ">= 0.10" } }, - "node_modules/fs-mkdirp-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3016,9 +3006,9 @@ } }, "node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", "dependencies": { "type-fest": "^0.20.2" }, @@ -3148,16 +3138,6 @@ "node": ">= 0.10" } }, - "node_modules/gulp-concat/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/gulp-ejs": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/gulp-ejs/-/gulp-ejs-5.1.0.tgz", @@ -3173,6 +3153,16 @@ "npm": ">= 3" } }, + "node_modules/gulp-ejs/node_modules/through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, "node_modules/gulp-htmlmin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/gulp-htmlmin/-/gulp-htmlmin-5.0.1.tgz", @@ -3187,16 +3177,6 @@ "node": ">= 6.0" } }, - "node_modules/gulp-htmlmin/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/gulp-rename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", @@ -3518,9 +3498,9 @@ "dev": true }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", "engines": { "node": ">= 4" } @@ -4140,9 +4120,13 @@ "dev": true }, "node_modules/js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } }, "node_modules/js-yaml": { "version": "4.1.0", @@ -4343,9 +4327,9 @@ "dev": true }, "node_modules/luxon": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.1.0.tgz", - "integrity": "sha512-7w6hmKC0/aoWnEsmPCu5Br54BmbmUp5GfcqBxQngRcXJ+q5fdfjEzn7dxmJh2YdDhgW8PccYtlWKSv4tQkrTQg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.1.1.tgz", + "integrity": "sha512-Ah6DloGmvseB/pX1cAmjbFvyU/pKuwQMQqz7d0yvuDlVYLTs2WeDHQMpC8tGjm1da+BriHROW/OEIT/KfYg6xw==", "dev": true, "engines": { "node": ">=12" @@ -4882,13 +4866,6 @@ "node": ">=0.10.0" } }, - "node_modules/natives": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", - "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", - "deprecated": "This module relies on Node.js's internals and will break at some point. Do not use it, and update to graceful-fs@4.x.", - "dev": true - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5980,16 +5957,6 @@ "node": ">= 0.10" } }, - "node_modules/remove-bom-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -6228,9 +6195,9 @@ } }, "node_modules/sass/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -7026,18 +6993,15 @@ } }, "node_modules/swiped-events": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/swiped-events/-/swiped-events-1.1.6.tgz", - "integrity": "sha512-X0d1FbXes9j4AckSN/k2x6WW2KSTmtEFIjUjThVy8lKrB4Orf89xFPMNbAj2vTZE3Wo2+yaNl6hZoXH9DhC4vg==", - "dev": true, - "dependencies": { - "natives": "^1.1.6" - } + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/swiped-events/-/swiped-events-1.1.7.tgz", + "integrity": "sha512-bxEy7djwuLykZpPfoE4IFsbna/ngACEpyPqw9tBOaPQtAshsRK7H5CxoCgSXr0QRQ+7rd2TT3bSKLL3R6xJFwg==", + "dev": true }, "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", + "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -7070,12 +7034,13 @@ "dev": true }, "node_modules/through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "dependencies": { - "readable-stream": "2 || 3" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, "node_modules/through2-filter": { @@ -7088,16 +7053,6 @@ "xtend": "~4.0.0" } }, - "node_modules/through2-filter/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", @@ -7281,16 +7236,6 @@ "node": ">= 0.10" } }, - "node_modules/to-through/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -7705,16 +7650,6 @@ "node": ">= 0.10" } }, - "node_modules/vinyl-fs/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/vinyl-sourcemap": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", @@ -8475,9 +8410,9 @@ "dev": true }, "aws-sdk": { - "version": "2.1254.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1254.0.tgz", - "integrity": "sha512-PDBSEskxckCwmfl9GVU+F6JZ9NusgO98DzRRqFv/PzQxkyw6vbdT6N/porUt+mFmGz3HjnGZLeZdywaDMtx7Dg==", + "version": "2.1268.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1268.0.tgz", + "integrity": "sha512-N2A42YrSMTDFCY5lU3QOJz+CZbGKIrAQS3We9+HjEeDP+FPE+M2H9Zzy8Mk18uC6v8bP3lbTTCpTTvtje6i+Pw==", "dev": true, "requires": { "buffer": "4.9.2", @@ -8802,9 +8737,9 @@ } }, "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -9053,9 +8988,9 @@ "dev": true }, "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true }, "deep-is": { @@ -9345,9 +9280,9 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", - "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", + "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", "requires": { "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.11.6", @@ -9817,9 +9752,9 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", + "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", "requires": { "reusify": "^1.0.4" } @@ -9858,9 +9793,9 @@ } }, "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -10142,18 +10077,6 @@ "requires": { "graceful-fs": "^4.1.11", "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "fs.realpath": { @@ -10335,9 +10258,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", "requires": { "type-fest": "^0.20.2" } @@ -10432,18 +10355,6 @@ "concat-with-sourcemaps": "^1.0.0", "through2": "^2.0.0", "vinyl": "^2.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "gulp-ejs": { @@ -10455,6 +10366,18 @@ "ejs": "^3.0.1", "plugin-error": "^1.0.0", "through2": "^3.0.1" + }, + "dependencies": { + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } } }, "gulp-htmlmin": { @@ -10466,18 +10389,6 @@ "html-minifier": "^3.5.20", "plugin-error": "^1.0.1", "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "gulp-rename": { @@ -10734,9 +10645,9 @@ "dev": true }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==" }, "immutable": { "version": "4.1.0", @@ -11179,9 +11090,9 @@ "dev": true }, "js-sdsl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", - "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==" }, "js-yaml": { "version": "4.1.0", @@ -11344,9 +11255,9 @@ "dev": true }, "luxon": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.1.0.tgz", - "integrity": "sha512-7w6hmKC0/aoWnEsmPCu5Br54BmbmUp5GfcqBxQngRcXJ+q5fdfjEzn7dxmJh2YdDhgW8PccYtlWKSv4tQkrTQg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.1.1.tgz", + "integrity": "sha512-Ah6DloGmvseB/pX1cAmjbFvyU/pKuwQMQqz7d0yvuDlVYLTs2WeDHQMpC8tGjm1da+BriHROW/OEIT/KfYg6xw==", "dev": true }, "make-iterator": { @@ -11761,12 +11672,6 @@ } } }, - "natives": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", - "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", - "dev": true - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -12596,18 +12501,6 @@ "remove-bom-buffer": "^3.0.0", "safe-buffer": "^5.1.0", "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "remove-trailing-separator": { @@ -12767,9 +12660,9 @@ }, "dependencies": { "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -13409,18 +13302,15 @@ } }, "swiped-events": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/swiped-events/-/swiped-events-1.1.6.tgz", - "integrity": "sha512-X0d1FbXes9j4AckSN/k2x6WW2KSTmtEFIjUjThVy8lKrB4Orf89xFPMNbAj2vTZE3Wo2+yaNl6hZoXH9DhC4vg==", - "dev": true, - "requires": { - "natives": "^1.1.6" - } + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/swiped-events/-/swiped-events-1.1.7.tgz", + "integrity": "sha512-bxEy7djwuLykZpPfoE4IFsbna/ngACEpyPqw9tBOaPQtAshsRK7H5CxoCgSXr0QRQ+7rd2TT3bSKLL3R6xJFwg==", + "dev": true }, "terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", + "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -13449,12 +13339,13 @@ "dev": true }, "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "readable-stream": "2 || 3" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, "through2-filter": { @@ -13465,18 +13356,6 @@ "requires": { "through2": "~2.0.0", "xtend": "~4.0.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "time-stamp": { @@ -13619,18 +13498,6 @@ "dev": true, "requires": { "through2": "^2.0.3" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "toidentifier": { @@ -13983,18 +13850,6 @@ "value-or-function": "^3.0.0", "vinyl": "^2.0.0", "vinyl-sourcemap": "^1.1.0" - }, - "dependencies": { - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "vinyl-sourcemap": { diff --git a/views/index.ejs b/views/index.ejs index 9762f8c..de80b0b 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -20,6 +20,7 @@ + <% } else { %> @@ -50,6 +51,7 @@ + <% } %> From 2eb6f2da0a28420c296058c87b93cd365da24d38 Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Tue, 6 Dec 2022 10:11:22 -0600 Subject: [PATCH 5/5] 5.1.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2c0af88..72482db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ws4kp", - "version": "5.1.0", + "version": "5.1.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ws4kp", - "version": "5.1.0", + "version": "5.1.1", "license": "MIT", "dependencies": { "eslint": "^8.21.0", diff --git a/package.json b/package.json index 5d680c2..89ebdf4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ws4kp", - "version": "5.1.0", + "version": "5.1.1", "description": "Welcome to the WeatherStar 4000+ project page!", "main": "index.js", "scripts": {