From bf2ccff7d9ce90af70df53e4c9d7afb6f80c0d6e Mon Sep 17 00:00:00 2001 From: Tom Cariello Date: Thu, 15 Jun 2023 09:33:22 -0400 Subject: [PATCH 1/9] logging --- web/js/modules/palettes/actions.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/js/modules/palettes/actions.js b/web/js/modules/palettes/actions.js index bf4d10a977..931c2bb9e7 100644 --- a/web/js/modules/palettes/actions.js +++ b/web/js/modules/palettes/actions.js @@ -172,11 +172,14 @@ export function setToggledClassification(layerId, classIndex, index, groupName) state, ); let hasDisabled = false; + console.log('setToggledClassification'); + // if (Object.prototype.hasOwnProperty.call(newActivePalettesObj, layerId)) { newActivePalettesObj[layerId].maps.forEach((colorMap) => { if (colorMap.disabled && colorMap.disabled.length) { hasDisabled = true; } }); + // } // sometimes an active palette will be related to layers that we already removed during the // tour process. need to check if the layer is active to prevent errors when dispatching const getLayerIndex = () => { From 45a4273307cc540cc010e4795c52aff53514489c Mon Sep 17 00:00:00 2001 From: Patrick Moulden <4834892+PatchesMaps@users.noreply.github.com> Date: Thu, 15 Jun 2023 10:32:26 -0400 Subject: [PATCH 2/9] move logic for keydown events to timelinejs (#4423) --- .../timeline-controls/date-change-arrows.js | 27 ------------------- web/js/containers/timeline/timeline.js | 10 +++++-- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/web/js/components/timeline/timeline-controls/date-change-arrows.js b/web/js/components/timeline/timeline-controls/date-change-arrows.js index 32c2278ae4..71adbf00b6 100644 --- a/web/js/components/timeline/timeline-controls/date-change-arrows.js +++ b/web/js/components/timeline/timeline-controls/date-change-arrows.js @@ -27,11 +27,6 @@ class DateChangeArrows extends PureComponent { }; } - componentDidMount() { - document.addEventListener('keydown', this.handleKeyDown); - document.addEventListener('keyup', this.handleKeyUp); - } - componentDidUpdate (prevProps) { const { tilesPreloaded, arrowDown } = this.props; const notAnimating = !intervals.left && !intervals.right; @@ -45,8 +40,6 @@ class DateChangeArrows extends PureComponent { componentWillUnmount() { clearInterval(intervals.left); clearInterval(intervals.right); - document.removeEventListener('keydown', this.handleKeyDown); - document.removeEventListener('keyup', this.handleKeyUp); } clickAndHold = (direction) => { @@ -55,26 +48,6 @@ class DateChangeArrows extends PureComponent { arrowDownCheckTimer = null; }; - handleKeyDown = (e) => { - const { arrowDown } = this.props; - const direction = e.keyCode === 37 ? 'left' : e.keyCode === 39 ? 'right' : null; - if (e.target.tagName === 'INPUT' || e.target.className === 'form-range' || e.ctrlKey || e.metaKey) { - return; - } - if (direction) { - e.preventDefault(); - if (!arrowDown) this.onArrowDown(direction); - } - }; - - handleKeyUp = (e) => { - const direction = e.keyCode === 37 ? 'left' : e.keyCode === 39 ? 'right' : null; - if (direction) { - e.preventDefault(); - this.onArrowUp(direction); - } - }; - onArrowDown = (direction) => { this.arrowDownMap[direction](); arrowDownCheckTimer = setTimeout(() => { diff --git a/web/js/containers/timeline/timeline.js b/web/js/containers/timeline/timeline.js index 67cedd84f9..161e6a4121 100644 --- a/web/js/containers/timeline/timeline.js +++ b/web/js/containers/timeline/timeline.js @@ -515,17 +515,23 @@ class Timeline extends React.Component { if (e.target.tagName !== 'INPUT' && e.target.className !== 'form-range' && !e.ctrlKey && !e.metaKey && !isTimelineDragging) { const timeScaleNumber = Number(TIME_SCALE_TO_NUMBER[timeScale]); const maxTimeScaleNumber = hasSubdailyLayers ? 5 : 3; - if (e.keyCode === 38) { + if (e.key === 'ArrowUp') { e.preventDefault(); if (timeScaleNumber > 1) { this.changeTimeScale(timeScaleNumber - 1); } // down arrow - } else if (e.keyCode === 40) { + } else if (e.key === 'ArrowDown') { e.preventDefault(); if (timeScaleNumber < maxTimeScaleNumber) { this.changeTimeScale(timeScaleNumber + 1); } + } else if (e.key === 'ArrowLeft') { + e.preventDefault(); + this.handleArrowDateChange(-1); + } else if (e.key === 'ArrowRight') { + e.preventDefault(); + this.handleArrowDateChange(1); } } }; From fb3e0781f1179989a6d3fa9c484debc926e928e4 Mon Sep 17 00:00:00 2001 From: Patrick Moulden <4834892+PatchesMaps@users.noreply.github.com> Date: Thu, 15 Jun 2023 10:34:43 -0400 Subject: [PATCH 3/9] Make sure we are pointing to EONET v3 API --- tasks/link-check/html-url-extract.js | 2 +- tasks/link-check/natural-event-url-extract.js | 8 ++-- web/mock/events_data.json | 14 +++---- web/mock/events_data.json-20170530 | 16 +++---- web/mock/sources_data.json-20170530 | 42 +++++++++---------- 5 files changed, 41 insertions(+), 41 deletions(-) diff --git a/tasks/link-check/html-url-extract.js b/tasks/link-check/html-url-extract.js index 2f875891e8..1550902f1b 100644 --- a/tasks/link-check/html-url-extract.js +++ b/tasks/link-check/html-url-extract.js @@ -49,7 +49,7 @@ const getUrls = (htmlArray) => { // get URLS from HTML files // scraped URLs are saved in an array of objects with a key value pair of link text and href: -// 'Wildfire MB-CE042, Manitoba, Canada': 'https://eonet.gsfc.nasa.gov/api/v2.1/events/EONET_3518' +// 'Wildfire MB-CE042, Manitoba, Canada': 'https://eonet.gsfc.nasa.gov/api/v3/events/EONET_3518' const initExtractor = async () => { // any html file with a url will be scraped and added const htmlFiles = await walk('./build/options') diff --git a/tasks/link-check/natural-event-url-extract.js b/tasks/link-check/natural-event-url-extract.js index 7b72997f98..b2b5b88184 100644 --- a/tasks/link-check/natural-event-url-extract.js +++ b/tasks/link-check/natural-event-url-extract.js @@ -62,12 +62,12 @@ const scrapeLinks = async (htmlLinks) => { // get URLs from natural events EONET // scraped URLs are saved in an array of objects with a key value pair of link text and href: -// 'Wildfire MB-CE042, Manitoba, Canada': 'https://eonet.gsfc.nasa.gov/api/v2.1/events/EONET_3518' +// 'Wildfire MB-CE042, Manitoba, Canada': 'https://eonet.gsfc.nasa.gov/api/v3/events/EONET_3518' const initExtractor = async () => { // target EONET sources from natural events - const links = ['https://eonet.gsfc.nasa.gov/api/v2.1/sources', - 'https://eonet.gsfc.nasa.gov/api/v2.1/events', - 'https://eonet.gsfc.nasa.gov/api/v2.1/categories'] + const links = ['https://eonet.gsfc.nasa.gov/api/v3/sources', + 'https://eonet.gsfc.nasa.gov/api/v3/events', + 'https://eonet.gsfc.nasa.gov/api/v3/categories'] const results = await scrapeLinks(links) return results } diff --git a/web/mock/events_data.json b/web/mock/events_data.json index e928bf0913..2bf7b03f78 100644 --- a/web/mock/events_data.json +++ b/web/mock/events_data.json @@ -2,13 +2,13 @@ { "title": "EONET Events", "description": "Natural events from EONET.", - "link": "https://eonet.gsfc.nasa.gov/api/v2/events", + "link": "https://eonet.gsfc.nasa.gov/api/v3/events", "events": [ { "id": "EONET_2793", "title": "Elm Fire, California", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2793", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2793", "categories": [ { "id": "wildfires", @@ -38,7 +38,7 @@ "id": "EONET_2792", "title": "Santiago, Chile Flooding", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2792", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2792", "categories": [ { "id": "floods", @@ -68,7 +68,7 @@ "id": "EONET_2781", "title": "Langila Volcano, Papua New Guinea", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2781", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2781", "categories": [ { "id": "volcanoes", @@ -98,7 +98,7 @@ "id": "EONET_2733", "title": "Iceberg B30", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2733", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2733", "categories": [ { "id": "seaLakeIce", @@ -239,7 +239,7 @@ "id": "EONET_2733", "title": "Iceberg B30-TEST", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2733", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2733", "categories": [ { "id": "seaLakeIce", @@ -385,7 +385,7 @@ "id": "EONET_0001", "title": "Example id 1", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_0001", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_0001", "categories": [ { "id": "seaLakeIce", diff --git a/web/mock/events_data.json-20170530 b/web/mock/events_data.json-20170530 index 639965e343..108ebc6715 100644 --- a/web/mock/events_data.json-20170530 +++ b/web/mock/events_data.json-20170530 @@ -2,7 +2,7 @@ { "title": "EONET Events", "description": "Natural events from EONET.", - "link": "https://eonet.gsfc.nasa.gov/api/v2/events", + "link": "https://eonet.gsfc.nasa.gov/api/v3/events", "events": [ { "id": "EONET_99999", @@ -78,7 +78,7 @@ "id": "EONET_2804", "title": "Tropical Storm Mora", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2804", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2804", "categories": [ { "id": "severeStorms", @@ -135,7 +135,7 @@ "id": "EONET_2777", "title": "Tropical Worldview Storm", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2804", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2804", "categories": [ { "id": "severeStorms", @@ -172,7 +172,7 @@ "id": "EONET_3931", "title": "Rattlesnake Fire", "description": "", - "link": "https://eonet.gsfc.nasa.gov/api/v2/events/EONET_3931", + "link": "https://eonet.gsfc.nasa.gov/api/v3/events/EONET_3931", "categories": [ { "id": "wildfires", @@ -197,7 +197,7 @@ "id": "EONET_2781", "title": "Langila Volcano, Papua New Guinea", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2781", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2781", "categories": [ { "id": "volcanoes", @@ -227,7 +227,7 @@ "id": "EONET_2703", "title": "Iceberg B30", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2733", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2733", "categories": [ { "id": "seaLakeIce", @@ -369,7 +369,7 @@ "id": "EONET_2733", "title": "Iceberg B30-TEST", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_2733", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_2733", "categories": [ { "id": "seaLakeIce", @@ -515,7 +515,7 @@ "id": "EONET_0001", "title": "Example id 1", "description": "", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events/EONET_0001", + "link": "http://eonet.gsfc.nasa.gov/api/v3/events/EONET_0001", "categories": [ { "id": "seaLakeIce", diff --git a/web/mock/sources_data.json-20170530 b/web/mock/sources_data.json-20170530 index 78ca62718b..0911dc7686 100644 --- a/web/mock/sources_data.json-20170530 +++ b/web/mock/sources_data.json-20170530 @@ -2,127 +2,127 @@ { "title": "EONET Event Sources", "description": "List of all the available event sources in the EONET system", - "link": "http://eonet.gsfc.nasa.gov/api/v2/sources", + "link": "http://eonet.gsfc.nasa.gov/api/v3/sources", "sources": [ { "id": "TEST", "title": "Test Source", "source": "http://www.example.com/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=TEST" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=TEST" }, { "id": "AU_BOM", "title": "Australia Bureau of Meteorology", "source": "http://www.bom.gov.au/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=AU_BOM" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=AU_BOM" }, { "id": "BCWILDFIRE", "title": "British Columbia Wildfire Service", "source": "http://bcwildfire.ca/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=BCWILDFIRE" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=BCWILDFIRE" }, { "id": "CALFIRE", "title": "California Department of Forestry and Fire Protection", "source": "http://www.calfire.ca.gov/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=CALFIRE" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=CALFIRE" }, { "id": "CEMS", "title": "Copernicus Emergency Management Service", "source": "http://emergency.copernicus.eu/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=CEMS" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=CEMS" }, { "id": "EO", "title": "Earth Observatory", "source": "http://earthobservatory.nasa.gov/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=EO" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=EO" }, { "id": "GDACS", "title": "Global Disaster Alert and Coordination System", "source": "http://www.gdacs.org/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=GDACS" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=GDACS" }, { "id": "GLIDE", "title": "GLobal IDEntifier Number (GLIDE)", "source": "http://www.glidenumber.net/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=GLIDE" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=GLIDE" }, { "id": "InciWeb", "title": "InciWeb", "source": "http://inciweb.nwcg.gov/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=InciWeb" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=InciWeb" }, { "id": "IDC", "title": "International Charter on Space and Major Disasters", "source": "https://www.disasterscharter.org/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=IDC" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=IDC" }, { "id": "MRR", "title": "LANCE Rapid Response", "source": "https://lance.modaps.eosdis.nasa.gov/cgi-bin/imagery/gallery.cgi", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=MRR" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=MRR" }, { "id": "NASA_ESRS", "title": "NASA Earth Science and Remote Sensing Unit", "source": "https://eol.jsc.nasa.gov/ESRS/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=NASA_ESRS" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=NASA_ESRS" }, { "id": "PDC", "title": "Pacific Disaster Center", "source": "http://www.pdc.org/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=PDC" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=PDC" }, { "id": "ReliefWeb", "title": "ReliefWeb", "source": "http://reliefweb.int/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=ReliefWeb" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=ReliefWeb" }, { "id": "SIVolcano", "title": "Smithsonian Institution Global Volcanism Program", "source": "http://www.volcano.si.edu/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=SIVolcano" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=SIVolcano" }, { "id": "NATICE", "title": "U.S. National Ice Center", "source": "http://www.natice.noaa.gov/Main_Products.htm", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=NATICE" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=NATICE" }, { "id": "UNISYS", "title": "Unisys Weather", "source": "http://weather.unisys.com/hurricane/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=UNISYS" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=UNISYS" }, { "id": "USGS_CMT", "title": "USGS Emergency Operations Collection Management Tool", "source": "https://cmt.usgs.gov/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=USGS_CMT" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=USGS_CMT" }, { "id": "HDDS", "title": "USGS Hazards Data Distribution System", "source": "https://hddsexplorer.usgs.gov/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=HDDS" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=HDDS" }, { "id": "DFES_WA", "title": "Western Australia Department of Fire and Emergency Services", "source": "https://www.dfes.wa.gov.au/", - "link": "http://eonet.gsfc.nasa.gov/api/v2/events?source=DFES_WA" + "link": "http://eonet.gsfc.nasa.gov/api/v3/events?source=DFES_WA" } ] } From f3195bc5e8b92025cc1b2e79cc0fe7c6c16f7ec9 Mon Sep 17 00:00:00 2001 From: Ryan Weiler Date: Fri, 16 Jun 2023 10:50:58 -0400 Subject: [PATCH 4/9] dependabot updates 06-13-23 (#4443) --- package-lock.json | 490 ++++++++++++++++++++++------------------------ package.json | 20 +- 2 files changed, 249 insertions(+), 261 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b6ec589e0..4e48ed4563 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,11 +53,11 @@ "react-infinite-scroller": "^1.2.6", "react-joyride": "^2.5.4", "react-mobile-datepicker": "^4.0.2", - "react-redux": "^8.0.7", + "react-redux": "^8.1.0", "react-resizable": "^3.0.5", "react-swipe-to-delete-component": "1.0.5", "react-visibility-sensor": "^5.1.1", - "reactstrap": "^9.1.10", + "reactstrap": "^9.2.0", "redux": "^4.2.1", "redux-location-state": "^2.8.2", "redux-logger": "^3.0.6", @@ -73,7 +73,7 @@ "what-input": "^5.2.12" }, "devDependencies": { - "@babel/core": "^7.22.1", + "@babel/core": "^7.22.5", "@babel/eslint-parser": "^7.21.8", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/preset-env": "^7.22.5", @@ -89,7 +89,7 @@ "clean-webpack-plugin": "^4.0.0", "cross-env": "^7.0.3", "css-loader": "^6.8.1", - "css-minimizer-webpack-plugin": "^5.0.0", + "css-minimizer-webpack-plugin": "^5.0.1", "css-url-relative-plugin": "^1.1.0", "cssnano": "^6.0.1", "eslint": "^8.42.0", @@ -99,7 +99,7 @@ "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-n": "^15.7.0", + "eslint-plugin-n": "^16.0.0", "eslint-plugin-no-storage": "^1.0.2", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.1.1", @@ -119,13 +119,13 @@ "npm-run-all": "^4.1.5", "patch-package": "^7.0.0", "postcss": "^8.4.24", - "postcss-loader": "^7.3.1", + "postcss-loader": "^7.3.3", "react-refresh": "^0.14.0", "react-test-renderer": "^17.0.2", "redux-mock-store": "^1.5.4", "run-script-os": "^1.1.6", - "sass": "^1.62.1", - "sass-loader": "^13.3.0", + "sass": "^1.63.4", + "sass-loader": "^13.3.2", "shelljs": "^0.8.5", "showdown": "^2.1.0", "stylelint": "^15.7.0", @@ -133,11 +133,11 @@ "stylelint-high-performance-animation": "^1.8.0", "tar": "^6.1.15", "terser-webpack-plugin": "^5.3.9", - "webpack": "^5.86.0", + "webpack": "^5.87.0", "webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^5.1.4", "webpack-dev-middleware": "^6.1.1", - "webpack-dev-server": "^4.15.0", + "webpack-dev-server": "^4.15.1", "xml-js": "^1.6.11", "xml2js": "^0.6.0", "yargs": "^17.7.2" @@ -177,20 +177,21 @@ } }, "node_modules/@babel/core": { - "version": "7.22.1", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", + "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.22.0", - "@babel/helper-compilation-targets": "^7.22.1", - "@babel/helper-module-transforms": "^7.22.1", - "@babel/helpers": "^7.22.0", - "@babel/parser": "^7.22.0", - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -548,13 +549,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.3", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", + "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.3" + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2140,8 +2142,9 @@ "license": "MIT" }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.2.0", - "license": "MIT", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -2160,8 +2163,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.4.0", - "license": "MIT", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -3187,8 +3191,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "license": "MIT", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dependencies": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -3793,9 +3798,10 @@ "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.3", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -5773,16 +5779,17 @@ } }, "node_modules/css-minimizer-webpack-plugin": { - "version": "5.0.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "dev": true, - "license": "MIT", "dependencies": { - "cssnano": "^6.0.0", + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", "jest-worker": "^29.4.3", - "postcss": "^8.4.21", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.1", - "source-map": "^0.6.1" + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" }, "engines": { "node": ">= 14.15.0" @@ -5816,14 +5823,15 @@ } }, "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 12.13.0" @@ -5833,14 +5841,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/css-select": { "version": "5.1.0", "dev": true, @@ -6960,6 +6960,25 @@ "eslint": ">=4.19.1" } }, + "node_modules/eslint-plugin-es-x": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz", + "integrity": "sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, "node_modules/eslint-plugin-import": { "version": "2.27.5", "dev": true, @@ -7060,21 +7079,22 @@ } }, "node_modules/eslint-plugin-n": { - "version": "15.7.0", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz", + "integrity": "sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==", "dev": true, - "license": "MIT", "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", + "eslint-plugin-es-x": "^6.1.0", "ignore": "^5.1.1", - "is-core-module": "^2.11.0", + "is-core-module": "^2.12.0", "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" + "resolve": "^1.22.2", + "semver": "^7.5.0" }, "engines": { - "node": ">=12.22.0" + "node": ">=16.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" @@ -7083,67 +7103,11 @@ "eslint": ">=7.0.0" } }, - "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-n/node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-n/node_modules/eslint-utils": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.3.8", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -8886,8 +8850,9 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "license": "MIT", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "dependencies": { "has": "^1.0.3" }, @@ -11137,14 +11102,6 @@ "node": ">=6" } }, - "node_modules/klona": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/known-css-properties": { "version": "0.27.0", "dev": true, @@ -12895,13 +12852,13 @@ } }, "node_modules/postcss-loader": { - "version": "7.3.2", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", "dev": true, - "license": "MIT", "dependencies": { - "cosmiconfig": "^8.1.3", + "cosmiconfig": "^8.2.0", "jiti": "^1.18.2", - "klona": "^2.0.6", "semver": "^7.3.8" }, "engines": { @@ -12917,9 +12874,10 @@ } }, "node_modules/postcss-loader/node_modules/cosmiconfig": { - "version": "8.1.3", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, - "license": "MIT", "dependencies": { "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -12935,8 +12893,9 @@ }, "node_modules/postcss-loader/node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -13791,8 +13750,9 @@ "license": "MIT" }, "node_modules/react-redux": { - "version": "8.0.7", - "license": "MIT", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.0.tgz", + "integrity": "sha512-CtHZzAOxi7GQvTph4dVLWwZHAWUjV2kMEQtk50OrN8z3gKxpWg3Tz7JfDw32N3Rpd7fh02z73cF6yZkK467gbQ==", "dependencies": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -13952,8 +13912,9 @@ } }, "node_modules/reactstrap": { - "version": "9.1.10", - "license": "MIT", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-9.2.0.tgz", + "integrity": "sha512-WWLTEG00qYav0E55PorWHReYTkz5IqkVmQNy0h6U81yqjSp9fOLFGV5pYSVeAUz+yRhU/RTE0oAWy22zr6sOIw==", "dependencies": { "@babel/runtime": "^7.12.5", "@popperjs/core": "^2.6.0", @@ -14365,10 +14326,11 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.1", - "license": "MIT", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -14527,9 +14489,10 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.62.1", + "version": "1.63.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.4.tgz", + "integrity": "sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -14543,11 +14506,11 @@ } }, "node_modules/sass-loader": { - "version": "13.3.1", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", "dev": true, - "license": "MIT", "dependencies": { - "klona": "^2.0.6", "neo-async": "^2.6.2" }, "engines": { @@ -14612,8 +14575,9 @@ } }, "node_modules/schema-utils": { - "version": "3.1.2", - "license": "MIT", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -16473,8 +16437,9 @@ } }, "node_modules/webpack": { - "version": "5.86.0", - "license": "MIT", + "version": "5.87.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz", + "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -16485,7 +16450,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -16495,7 +16460,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -16721,9 +16686,10 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.0", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, - "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -16731,7 +16697,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -16882,8 +16848,9 @@ } }, "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.14.1", - "license": "MIT", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -16894,7 +16861,8 @@ }, "node_modules/webpack/node_modules/tapable": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "engines": { "node": ">=6" } @@ -17309,19 +17277,21 @@ "dev": true }, "@babel/core": { - "version": "7.22.1", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", + "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.22.0", - "@babel/helper-compilation-targets": "^7.22.1", - "@babel/helper-module-transforms": "^7.22.1", - "@babel/helpers": "^7.22.0", - "@babel/parser": "^7.22.0", - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -17554,12 +17524,14 @@ } }, "@babel/helpers": { - "version": "7.22.3", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", + "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", "dev": true, "requires": { - "@babel/template": "^7.21.9", - "@babel/traverse": "^7.22.1", - "@babel/types": "^7.22.3" + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" } }, "@babel/highlight": { @@ -18495,7 +18467,9 @@ "version": "0.3.0" }, "@eslint-community/eslint-utils": { - "version": "4.2.0", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "requires": { "eslint-visitor-keys": "^3.3.0" }, @@ -18506,7 +18480,9 @@ } }, "@eslint-community/regexpp": { - "version": "4.4.0" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==" }, "@eslint/eslintrc": { "version": "2.0.3", @@ -19163,7 +19139,9 @@ "version": "1.4.14" }, "@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" @@ -19616,7 +19594,9 @@ "version": "0.0.3" }, "@types/ws": { - "version": "8.5.3", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", "dev": true, "requires": { "@types/node": "*" @@ -20886,30 +20866,30 @@ } }, "css-minimizer-webpack-plugin": { - "version": "5.0.0", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "dev": true, "requires": { - "cssnano": "^6.0.0", + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", "jest-worker": "^29.4.3", - "postcss": "^8.4.21", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.1", - "source-map": "^0.6.1" + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" }, "dependencies": { "schema-utils": { - "version": "4.0.0", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" } - }, - "source-map": { - "version": "0.6.1", - "dev": true } } }, @@ -21720,6 +21700,16 @@ "regexpp": "^3.0.0" } }, + "eslint-plugin-es-x": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz", + "integrity": "sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.5.0" + } + }, "eslint-plugin-import": { "version": "2.27.5", "dev": true, @@ -21787,49 +21777,25 @@ } }, "eslint-plugin-n": { - "version": "15.7.0", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz", + "integrity": "sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", + "eslint-plugin-es-x": "^6.1.0", "ignore": "^5.1.1", - "is-core-module": "^2.11.0", + "is-core-module": "^2.12.0", "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" + "resolve": "^1.22.2", + "semver": "^7.5.0" }, "dependencies": { - "eslint-plugin-es": { - "version": "4.1.0", - "dev": true, - "requires": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "dev": true - } - } - }, - "eslint-utils": { - "version": "3.0.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, "semver": { - "version": "7.3.8", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -22789,7 +22755,9 @@ "dev": true }, "is-core-module": { - "version": "2.11.0", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "requires": { "has": "^1.0.3" } @@ -24198,10 +24166,6 @@ "version": "3.0.3", "dev": true }, - "klona": { - "version": "2.0.6", - "dev": true - }, "known-css-properties": { "version": "0.27.0", "dev": true @@ -25257,17 +25221,20 @@ "requires": {} }, "postcss-loader": { - "version": "7.3.2", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", "dev": true, "requires": { - "cosmiconfig": "^8.1.3", + "cosmiconfig": "^8.2.0", "jiti": "^1.18.2", - "klona": "^2.0.6", "semver": "^7.3.8" }, "dependencies": { "cosmiconfig": { - "version": "8.1.3", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, "requires": { "import-fresh": "^3.2.1", @@ -25278,6 +25245,8 @@ }, "parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -25769,7 +25738,9 @@ "version": "1.0.4" }, "react-redux": { - "version": "8.0.7", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.0.tgz", + "integrity": "sha512-CtHZzAOxi7GQvTph4dVLWwZHAWUjV2kMEQtk50OrN8z3gKxpWg3Tz7JfDw32N3Rpd7fh02z73cF6yZkK467gbQ==", "requires": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -25863,7 +25834,9 @@ } }, "reactstrap": { - "version": "9.1.10", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-9.2.0.tgz", + "integrity": "sha512-WWLTEG00qYav0E55PorWHReYTkz5IqkVmQNy0h6U81yqjSp9fOLFGV5pYSVeAUz+yRhU/RTE0oAWy22zr6sOIw==", "requires": { "@babel/runtime": "^7.12.5", "@popperjs/core": "^2.6.0", @@ -26149,9 +26122,11 @@ "version": "4.1.8" }, "resolve": { - "version": "1.22.1", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -26240,7 +26215,9 @@ "dev": true }, "sass": { - "version": "1.62.1", + "version": "1.63.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.4.tgz", + "integrity": "sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -26249,10 +26226,11 @@ } }, "sass-loader": { - "version": "13.3.1", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", "dev": true, "requires": { - "klona": "^2.0.6", "neo-async": "^2.6.2" } }, @@ -26279,7 +26257,9 @@ } }, "schema-utils": { - "version": "3.1.2", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -27485,7 +27465,9 @@ "dev": true }, "webpack": { - "version": "5.86.0", + "version": "5.87.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz", + "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==", "requires": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -27496,7 +27478,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -27506,7 +27488,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -27514,14 +27496,18 @@ }, "dependencies": { "enhanced-resolve": { - "version": "5.14.1", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "tapable": { - "version": "2.2.1" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" } } }, @@ -27640,7 +27626,9 @@ } }, "webpack-dev-server": { - "version": "4.15.0", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "requires": { "@types/bonjour": "^3.5.9", @@ -27649,7 +27637,7 @@ "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", diff --git a/package.json b/package.json index b860ff0959..ae44c9f875 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "upload": "node tasks/util/upload.js" }, "devDependencies": { - "@babel/core": "^7.22.1", + "@babel/core": "^7.22.5", "@babel/eslint-parser": "^7.21.8", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/preset-env": "^7.22.5", @@ -91,7 +91,7 @@ "clean-webpack-plugin": "^4.0.0", "cross-env": "^7.0.3", "css-loader": "^6.8.1", - "css-minimizer-webpack-plugin": "^5.0.0", + "css-minimizer-webpack-plugin": "^5.0.1", "css-url-relative-plugin": "^1.1.0", "cssnano": "^6.0.1", "eslint": "^8.42.0", @@ -101,7 +101,7 @@ "eslint-plugin-import": "^2.27.5", "eslint-plugin-jest": "^27.2.1", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-n": "^15.7.0", + "eslint-plugin-n": "^16.0.0", "eslint-plugin-no-storage": "^1.0.2", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^6.1.1", @@ -121,13 +121,13 @@ "npm-run-all": "^4.1.5", "patch-package": "^7.0.0", "postcss": "^8.4.24", - "postcss-loader": "^7.3.1", + "postcss-loader": "^7.3.3", "react-refresh": "^0.14.0", "react-test-renderer": "^17.0.2", "redux-mock-store": "^1.5.4", "run-script-os": "^1.1.6", - "sass": "^1.62.1", - "sass-loader": "^13.3.0", + "sass": "^1.63.4", + "sass-loader": "^13.3.2", "shelljs": "^0.8.5", "showdown": "^2.1.0", "stylelint": "^15.7.0", @@ -135,11 +135,11 @@ "stylelint-high-performance-animation": "^1.8.0", "tar": "^6.1.15", "terser-webpack-plugin": "^5.3.9", - "webpack": "^5.86.0", + "webpack": "^5.87.0", "webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^5.1.4", "webpack-dev-middleware": "^6.1.1", - "webpack-dev-server": "^4.15.0", + "webpack-dev-server": "^4.15.1", "xml-js": "^1.6.11", "xml2js": "^0.6.0", "yargs": "^17.7.2" @@ -188,11 +188,11 @@ "react-infinite-scroller": "^1.2.6", "react-joyride": "^2.5.4", "react-mobile-datepicker": "^4.0.2", - "react-redux": "^8.0.7", + "react-redux": "^8.1.0", "react-resizable": "^3.0.5", "react-swipe-to-delete-component": "1.0.5", "react-visibility-sensor": "^5.1.1", - "reactstrap": "^9.1.10", + "reactstrap": "^9.2.0", "redux": "^4.2.1", "redux-location-state": "^2.8.2", "redux-logger": "^3.0.6", From 0a84bc050c6d42e698ad43c703ece016c2ddcc3a Mon Sep 17 00:00:00 2001 From: minniewong Date: Wed, 21 Jun 2023 12:04:48 -0400 Subject: [PATCH 5/9] typo updates to MERRA ozone and air temp --- .../layers/merra/MERRA2_Air_Temperature_250hPa_Monthly.md | 2 +- .../layers/merra/MERRA2_Ozone_Mixing_Ratio_50hPa_Monthly.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/default/common/config/metadata/layers/merra/MERRA2_Air_Temperature_250hPa_Monthly.md b/config/default/common/config/metadata/layers/merra/MERRA2_Air_Temperature_250hPa_Monthly.md index a803cd8df6..185aaf05c7 100644 --- a/config/default/common/config/metadata/layers/merra/MERRA2_Air_Temperature_250hPa_Monthly.md +++ b/config/default/common/config/metadata/layers/merra/MERRA2_Air_Temperature_250hPa_Monthly.md @@ -1,3 +1,3 @@ -The Air Temperature at 250 hPa (Monthly) layer is created from the M2IMNPASM (or instM_3d_asm_Np) data collection. M2IMNPASM is an instantaneous 3-dimensional monthly mean data collection in Modern-Era Retrospective analysis for Research and Applications version 2 (MERRA-2). This collection consists of assimilations of meteorological parameters at 42 pressure levels, such as temperature, wind components, vertical pressure velocity, water vapor, ozone mass mixing ratio, and layer height. The information on the pressure levels can be found in the section 4.2 of the MERRA-2 File Specification document. The collection also includes certain quadratic information (such as the variance and covariance of certain parameters). MERRA-2 is the latest version of global atmospheric reanalysis for the satellite era produced by NASA Global Modeling and Assimilation Office (GMAO) using the Goddard Earth Observing System Model (GEOS) version 5.12.4. +The Air Temperature at 250hPa (Monthly) layer is created from the M2IMNPASM (or instM_3d_asm_Np) data collection. M2IMNPASM is an instantaneous 3-dimensional monthly mean data collection in Modern-Era Retrospective analysis for Research and Applications version 2 (MERRA-2). This collection consists of assimilations of meteorological parameters at 42 pressure levels, such as temperature, wind components, vertical pressure velocity, water vapor, ozone mass mixing ratio, and layer height. The information on the pressure levels can be found in the section 4.2 of the MERRA-2 File Specification document. The collection also includes certain quadratic information (such as the variance and covariance of certain parameters). MERRA-2 is the latest version of global atmospheric reanalysis for the satellite era produced by NASA Global Modeling and Assimilation Office (GMAO) using the Goddard Earth Observing System Model (GEOS) version 5.12.4. References: M2IMNPASM [doi:10.5067/2E096JV59PK7](https://doi.org/10.5067/2E096JV59PK7) \ No newline at end of file diff --git a/config/default/common/config/metadata/layers/merra/MERRA2_Ozone_Mixing_Ratio_50hPa_Monthly.md b/config/default/common/config/metadata/layers/merra/MERRA2_Ozone_Mixing_Ratio_50hPa_Monthly.md index e4233f4d6e..9bb8b18171 100644 --- a/config/default/common/config/metadata/layers/merra/MERRA2_Ozone_Mixing_Ratio_50hPa_Monthly.md +++ b/config/default/common/config/metadata/layers/merra/MERRA2_Ozone_Mixing_Ratio_50hPa_Monthly.md @@ -1,3 +1,3 @@ -The Ozone Mixing Ratio at 500hPa (Monthly) layer is created from the M2IMNPANA data collection. M2IMNPANA (or instM_3d_ana_Np) is an instantaneous 3-dimensional monthly mean data collection in Modern-Era Retrospective analysis for Research and Applications version 2 (MERRA-2). This collection consists of analyzed meteorological fields at 42 pressure levels, such as temperature, wind components, specific humidity, ozone mixing ratio, and geopotential height. The information on the pressure levels can be found in the section 4.2 of the MERRA-2 File Specification document. The collection also includes certain quadratic information (such as the variance and covariance of certain parameters). MERRA-2 is the latest version of global atmospheric reanalysis for the satellite era produced by NASA Global Modeling and Assimilation Office (GMAO) using the Goddard Earth Observing System Model (GEOS) version 5.12.4. +The Ozone Mixing Ratio at 50hPa (Monthly) layer is created from the M2IMNPANA data collection. M2IMNPANA (or instM_3d_ana_Np) is an instantaneous 3-dimensional monthly mean data collection in Modern-Era Retrospective analysis for Research and Applications version 2 (MERRA-2). This collection consists of analyzed meteorological fields at 42 pressure levels, such as temperature, wind components, specific humidity, ozone mixing ratio, and geopotential height. The information on the pressure levels can be found in the section 4.2 of the MERRA-2 File Specification document. The collection also includes certain quadratic information (such as the variance and covariance of certain parameters). MERRA-2 is the latest version of global atmospheric reanalysis for the satellite era produced by NASA Global Modeling and Assimilation Office (GMAO) using the Goddard Earth Observing System Model (GEOS) version 5.12.4. References: M2IMNPANA [doi:10.5067/V92O8XZ30XBI](https://doi.org/10.5067/V92O8XZ30XBI) \ No newline at end of file From b6766aee6da3fc24ffbcb10c36437b2dc66ba47c Mon Sep 17 00:00:00 2001 From: Ryan Weiler Date: Fri, 23 Jun 2023 09:28:29 -0400 Subject: [PATCH 6/9] dependabot updates 6.23.23 (#4457) --- package-lock.json | 152 ++++++++++++++++++++++++---------------------- package.json | 18 +++--- 2 files changed, 90 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e48ed4563..cbc6b16f32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "react-infinite-scroller": "^1.2.6", "react-joyride": "^2.5.4", "react-mobile-datepicker": "^4.0.2", - "react-redux": "^8.1.0", + "react-redux": "^8.1.1", "react-resizable": "^3.0.5", "react-swipe-to-delete-component": "1.0.5", "react-visibility-sensor": "^5.1.1", @@ -74,11 +74,11 @@ }, "devDependencies": { "@babel/core": "^7.22.5", - "@babel/eslint-parser": "^7.21.8", + "@babel/eslint-parser": "^7.22.5", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/preset-env": "^7.22.5", "@babel/preset-react": "^7.22.5", - "@playwright/test": "^1.35.0", + "@playwright/test": "^1.35.1", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@webpack-cli/serve": "^2.0.5", "ajv": "^8.12.0", @@ -92,12 +92,12 @@ "css-minimizer-webpack-plugin": "^5.0.1", "css-url-relative-plugin": "^1.1.0", "cssnano": "^6.0.1", - "eslint": "^8.42.0", + "eslint": "^8.43.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-standard": "^17.1.0", "eslint-import-resolver-webpack": "^0.13.2", "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jest": "^27.2.1", + "eslint-plugin-jest": "^27.2.2", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-n": "^16.0.0", "eslint-plugin-no-storage": "^1.0.2", @@ -107,7 +107,7 @@ "eslint-plugin-standard": "^5.0.0", "express": "^4.18.2", "fetch-mock": "^9.11.0", - "glob": "^10.2.7", + "glob": "^10.3.0", "husky": "^8.0.3", "jest": "^29.5.0", "jest-canvas-mock": "^2.5.1", @@ -124,16 +124,16 @@ "react-test-renderer": "^17.0.2", "redux-mock-store": "^1.5.4", "run-script-os": "^1.1.6", - "sass": "^1.63.4", + "sass": "^1.63.6", "sass-loader": "^13.3.2", "shelljs": "^0.8.5", "showdown": "^2.1.0", - "stylelint": "^15.7.0", + "stylelint": "^15.8.0", "stylelint-config-standard-scss": "^9.0.0", "stylelint-high-performance-animation": "^1.8.0", "tar": "^6.1.15", "terser-webpack-plugin": "^5.3.9", - "webpack": "^5.87.0", + "webpack": "^5.88.0", "webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^5.1.4", "webpack-dev-middleware": "^6.1.1", @@ -207,9 +207,10 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.21.8", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.5.tgz", + "integrity": "sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==", "dev": true, - "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -2233,8 +2234,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.42.0", - "license": "MIT", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", + "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -3293,12 +3295,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.35.0", + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.35.1.tgz", + "integrity": "sha512-b5YoFe6J9exsMYg0pQAobNDR85T1nLumUYgUTtKm4d21iX2L7WqKq9dW8NGJ+2vX0etZd+Y7UeuqsxDXm9+5ZA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@types/node": "*", - "playwright-core": "1.35.0" + "playwright-core": "1.35.1" }, "bin": { "playwright": "cli.js" @@ -6740,13 +6743,14 @@ } }, "node_modules/eslint": { - "version": "8.42.0", - "license": "MIT", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", + "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", + "@eslint/js": "8.43.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7027,9 +7031,10 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "27.2.1", + "version": "27.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.2.tgz", + "integrity": "sha512-euzbp06F934Z7UDl5ZUaRPLAc9MKjh0rMPERrHT7UhlCEwgb25kBj37TvMgWeHZVkR5I9CayswrpoaqZU1RImw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.10.0" }, @@ -7038,7 +7043,8 @@ }, "peerDependencies": { "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" }, "peerDependenciesMeta": { "@typescript-eslint/eslint-plugin": { @@ -8129,9 +8135,10 @@ } }, "node_modules/glob": { - "version": "10.2.7", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz", + "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", @@ -12715,9 +12722,10 @@ } }, "node_modules/playwright-core": { - "version": "1.35.0", + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.35.1.tgz", + "integrity": "sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==", "dev": true, - "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, @@ -13750,9 +13758,9 @@ "license": "MIT" }, "node_modules/react-redux": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.0.tgz", - "integrity": "sha512-CtHZzAOxi7GQvTph4dVLWwZHAWUjV2kMEQtk50OrN8z3gKxpWg3Tz7JfDw32N3Rpd7fh02z73cF6yZkK467gbQ==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.1.tgz", + "integrity": "sha512-5W0QaKtEhj+3bC0Nj0NkqkhIv8gLADH/2kYFMTHxCVqQILiWzLv6MaLuV5wJU3BQEdHKzTfcvPN0WMS6SC1oyA==", "dependencies": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -13762,7 +13770,6 @@ "use-sync-external-store": "^1.0.0" }, "peerDependencies": { - "@reduxjs/toolkit": "^1 || ^2.0.0-beta.0", "@types/react": "^16.8 || ^17.0 || ^18.0", "@types/react-dom": "^16.8 || ^17.0 || ^18.0", "react": "^16.8 || ^17.0 || ^18.0", @@ -13771,9 +13778,6 @@ "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { - "@reduxjs/toolkit": { - "optional": true - }, "@types/react": { "optional": true }, @@ -14489,9 +14493,9 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.63.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.4.tgz", - "integrity": "sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==", + "version": "1.63.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.6.tgz", + "integrity": "sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -15418,9 +15422,10 @@ } }, "node_modules/stylelint": { - "version": "15.7.0", + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.8.0.tgz", + "integrity": "sha512-x9qBk84F3MEjMEUNCE7MtWmfj9G9y5XzJ0cpQeJdy2l/IoqjC8Ih0N0ytmOTnXE4Yv0J7I1cmVRQUVNSPCxTsA==", "dev": true, - "license": "MIT", "dependencies": { "@csstools/css-parser-algorithms": "^2.2.0", "@csstools/css-tokenizer": "^2.1.1", @@ -15462,7 +15467,6 @@ "supports-hyperlinks": "^3.0.0", "svg-tags": "^1.0.0", "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -16345,11 +16349,6 @@ "node": "*" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "dev": true, - "license": "MIT" - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "dev": true, @@ -16437,9 +16436,9 @@ } }, "node_modules/webpack": { - "version": "5.87.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz", - "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==", + "version": "5.88.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz", + "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -17300,7 +17299,9 @@ } }, "@babel/eslint-parser": { - "version": "7.21.8", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.5.tgz", + "integrity": "sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==", "dev": true, "requires": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -18522,7 +18523,9 @@ } }, "@eslint/js": { - "version": "8.42.0" + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", + "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==" }, "@floating-ui/core": { "version": "1.2.6" @@ -19209,12 +19212,14 @@ "optional": true }, "@playwright/test": { - "version": "1.35.0", + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.35.1.tgz", + "integrity": "sha512-b5YoFe6J9exsMYg0pQAobNDR85T1nLumUYgUTtKm4d21iX2L7WqKq9dW8NGJ+2vX0etZd+Y7UeuqsxDXm9+5ZA==", "dev": true, "requires": { "@types/node": "*", "fsevents": "2.3.2", - "playwright-core": "1.35.0" + "playwright-core": "1.35.1" } }, "@pmmmwh/react-refresh-webpack-plugin": { @@ -21488,12 +21493,14 @@ } }, "eslint": { - "version": "8.42.0", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", + "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", + "@eslint/js": "8.43.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -21748,7 +21755,9 @@ } }, "eslint-plugin-jest": { - "version": "27.2.1", + "version": "27.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.2.tgz", + "integrity": "sha512-euzbp06F934Z7UDl5ZUaRPLAc9MKjh0rMPERrHT7UhlCEwgb25kBj37TvMgWeHZVkR5I9CayswrpoaqZU1RImw==", "dev": true, "requires": { "@typescript-eslint/utils": "^5.10.0" @@ -22333,7 +22342,9 @@ } }, "glob": { - "version": "10.2.7", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz", + "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==", "dev": true, "requires": { "foreground-child": "^3.1.0", @@ -25159,7 +25170,9 @@ } }, "playwright-core": { - "version": "1.35.0", + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.35.1.tgz", + "integrity": "sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==", "dev": true }, "popper.js": { @@ -25738,9 +25751,9 @@ "version": "1.0.4" }, "react-redux": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.0.tgz", - "integrity": "sha512-CtHZzAOxi7GQvTph4dVLWwZHAWUjV2kMEQtk50OrN8z3gKxpWg3Tz7JfDw32N3Rpd7fh02z73cF6yZkK467gbQ==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.1.tgz", + "integrity": "sha512-5W0QaKtEhj+3bC0Nj0NkqkhIv8gLADH/2kYFMTHxCVqQILiWzLv6MaLuV5wJU3BQEdHKzTfcvPN0WMS6SC1oyA==", "requires": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -26215,9 +26228,9 @@ "dev": true }, "sass": { - "version": "1.63.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.4.tgz", - "integrity": "sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==", + "version": "1.63.6", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.6.tgz", + "integrity": "sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -26839,7 +26852,9 @@ } }, "stylelint": { - "version": "15.7.0", + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.8.0.tgz", + "integrity": "sha512-x9qBk84F3MEjMEUNCE7MtWmfj9G9y5XzJ0cpQeJdy2l/IoqjC8Ih0N0ytmOTnXE4Yv0J7I1cmVRQUVNSPCxTsA==", "dev": true, "requires": { "@csstools/css-parser-algorithms": "^2.2.0", @@ -26882,7 +26897,6 @@ "supports-hyperlinks": "^3.0.0", "svg-tags": "^1.0.0", "table": "^6.8.1", - "v8-compile-cache": "^2.3.0", "write-file-atomic": "^5.0.1" }, "dependencies": { @@ -27397,10 +27411,6 @@ "uuid-v4": { "version": "0.1.0" }, - "v8-compile-cache": { - "version": "2.3.0", - "dev": true - }, "v8-compile-cache-lib": { "version": "3.0.1", "dev": true, @@ -27465,9 +27475,9 @@ "dev": true }, "webpack": { - "version": "5.87.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz", - "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==", + "version": "5.88.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz", + "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==", "requires": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", diff --git a/package.json b/package.json index ae44c9f875..def97acdfb 100644 --- a/package.json +++ b/package.json @@ -76,11 +76,11 @@ }, "devDependencies": { "@babel/core": "^7.22.5", - "@babel/eslint-parser": "^7.21.8", + "@babel/eslint-parser": "^7.22.5", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/preset-env": "^7.22.5", "@babel/preset-react": "^7.22.5", - "@playwright/test": "^1.35.0", + "@playwright/test": "^1.35.1", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@webpack-cli/serve": "^2.0.5", "ajv": "^8.12.0", @@ -94,12 +94,12 @@ "css-minimizer-webpack-plugin": "^5.0.1", "css-url-relative-plugin": "^1.1.0", "cssnano": "^6.0.1", - "eslint": "^8.42.0", + "eslint": "^8.43.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-standard": "^17.1.0", "eslint-import-resolver-webpack": "^0.13.2", "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jest": "^27.2.1", + "eslint-plugin-jest": "^27.2.2", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-n": "^16.0.0", "eslint-plugin-no-storage": "^1.0.2", @@ -109,7 +109,7 @@ "eslint-plugin-standard": "^5.0.0", "express": "^4.18.2", "fetch-mock": "^9.11.0", - "glob": "^10.2.7", + "glob": "^10.3.0", "husky": "^8.0.3", "jest": "^29.5.0", "jest-canvas-mock": "^2.5.1", @@ -126,16 +126,16 @@ "react-test-renderer": "^17.0.2", "redux-mock-store": "^1.5.4", "run-script-os": "^1.1.6", - "sass": "^1.63.4", + "sass": "^1.63.6", "sass-loader": "^13.3.2", "shelljs": "^0.8.5", "showdown": "^2.1.0", - "stylelint": "^15.7.0", + "stylelint": "^15.8.0", "stylelint-config-standard-scss": "^9.0.0", "stylelint-high-performance-animation": "^1.8.0", "tar": "^6.1.15", "terser-webpack-plugin": "^5.3.9", - "webpack": "^5.87.0", + "webpack": "^5.88.0", "webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^5.1.4", "webpack-dev-middleware": "^6.1.1", @@ -188,7 +188,7 @@ "react-infinite-scroller": "^1.2.6", "react-joyride": "^2.5.4", "react-mobile-datepicker": "^4.0.2", - "react-redux": "^8.1.0", + "react-redux": "^8.1.1", "react-resizable": "^3.0.5", "react-swipe-to-delete-component": "1.0.5", "react-visibility-sensor": "^5.1.1", From 8d8c9667fac1f194100543103d93aed6c9cacebd Mon Sep 17 00:00:00 2001 From: Tom Cariello Date: Tue, 27 Jun 2023 14:31:08 -0400 Subject: [PATCH 7/9] WV-2617 Ability to change palette of single-color vector products (#4349) * Added color palette selector in UI for vector layers * Removed unused code block, allowing custom palettes to apply to vector layers when zoomed out * lint fixes & typo * Removed extra logging & comments * Forcing all non-black pixels to the palette color in lookupimagetile.js * disabled eslint destructuring for now * Partial solution for updating vector circle & fill colors in the GLStyle object. * logs * logging * Adjusting logs * more logging * logs * logging * Loging & dev button * Added random backround color on vector layers * Added random backround color on vector layers * Added random backround color on vector layers * Busted OL cache, vector styling much improved. * logging * Exploring redux behavior * Removed logging & vectorstyledefault from state * Redux state includes customDefault obj which retains default values. Removed logging. * Fix default style on feature selection * Removed palette from orbit tracks & settlements, removed logging * Removed extra comments in lookupimagetile.js * Fix for invalid initial default styles * Logging * logging * Fixed comparison mode style application issue. * lint fix * Fixed changing vector palette back to default color * Adjusted styling logic to avoid reverting to default on vector element interaction * Minor cleanup * Applied fuzzy match for palette swapping * Reduced processing of non-exact pixel colors by storing result * refactored anti-alias palette work * Enabled Settlements palette swap; fuzzy match handles the opacity pretty well. --------- Co-authored-by: Thomas Cariello --- .../layer/settings/layer-settings.js | 7 +- web/js/modules/vector-styles/reducers.js | 8 +- web/js/modules/vector-styles/selectors.js | 74 ++++++++++++++----- web/js/modules/vector-styles/util.js | 4 +- web/js/ol/lookupimagetile.js | 44 +++++++++-- 5 files changed, 105 insertions(+), 32 deletions(-) diff --git a/web/js/components/layer/settings/layer-settings.js b/web/js/components/layer/settings/layer-settings.js index f1bb12df7c..b4f182ffb7 100644 --- a/web/js/components/layer/settings/layer-settings.js +++ b/web/js/components/layer/settings/layer-settings.js @@ -340,13 +340,16 @@ class LayerSettings extends React.Component { } = this.props; const hasAssociatedLayers = layer.associatedLayers && layer.associatedLayers.length; const hasTracks = layer.orbitTracks && layer.orbitTracks.length; + const layerGroup = layer.layergroup; if (layer.type !== 'vector') { renderCustomizations = customPalettesIsActive && palettedAllowed && layer.palette ? this.renderCustomPalettes() : ''; - } else { - renderCustomizations = ''; // this.renderVectorStyles(); for future + } else if (layerGroup !== 'Orbital Track' && layerGroup !== 'Reference') { + // Orbital Tracks palette swap looks bad at WMS zoom levels (white text stamps) + // Reference (MGRS/HLS Grid) has no need for palettes + renderCustomizations = this.renderCustomPalettes(); } if (!layer.id) return ''; diff --git a/web/js/modules/vector-styles/reducers.js b/web/js/modules/vector-styles/reducers.js index 014a5c7a76..a3e1661274 100644 --- a/web/js/modules/vector-styles/reducers.js +++ b/web/js/modules/vector-styles/reducers.js @@ -1,4 +1,4 @@ -import { assign as lodashAssign, get as lodashGet } from 'lodash'; +import { assign as lodashAssign, get as lodashGet, cloneDeep as lodashCloneDeep } from 'lodash'; import { CLEAR_VECTORSTYLE, SET_VECTORSTYLE, @@ -14,9 +14,9 @@ export const defaultVectorStyleState = { }; export function getInitialVectorStyleState(config) { const custom = lodashGet(config, 'vectorStyles') || {}; - return lodashAssign({}, defaultVectorStyleState, { - custom, - }); + const customDefault = lodashCloneDeep(custom); + + return lodashAssign({}, defaultVectorStyleState, { custom, customDefault }); } export function vectorStyleReducer(state = defaultVectorStyleState, action) { diff --git a/web/js/modules/vector-styles/selectors.js b/web/js/modules/vector-styles/selectors.js index 43f073adc7..331f0eb4e3 100644 --- a/web/js/modules/vector-styles/selectors.js +++ b/web/js/modules/vector-styles/selectors.js @@ -3,6 +3,7 @@ import { isUndefined as lodashIsUndefined, each as lodashEach, find as lodashFind, + cloneDeep as lodashCloneDeep, } from 'lodash'; import update from 'immutability-helper'; @@ -11,13 +12,12 @@ import { stylefunction } from 'ol-mapbox-style'; import { getMinValue, getMaxValue, selectedStyleFunction, } from './util'; -import { - getActiveLayers, -} from '../layers/selectors'; +import util from '../../util/util'; + /** * Get OpenLayers layers from state that were created from WV vector - * layer definiteions. NOTE: This currently also will include the associate WMS + * layer definitions. NOTE: This currently also will include the associate WMS * breakpoint layers as well. * * @param {*} state @@ -96,7 +96,16 @@ export function setRange(layerId, props, index, palettes, state) { }; } -export function setStyleFunction(def, vectorStyleId, vectorStyles, layer, state) { +/** Sets the Style Function for the layer (this styles vector features) + * + * @param {Object} def | Layer definition + * @param {String} vectorStyleId | ID to lookup the vector style in the state + * @param {Object} vectorStyles | Contains styles of all vector products + * @param {Object} layer | OL layer object + * @param {Object} state | The entire state of the application + * @param {Boolean} styleSelection | Indicates if the request is triggered by user interaction with vector feature + */ +export function setStyleFunction(def, vectorStyleId, vectorStyles, layer, state, styleSelection = false) { const map = lodashGet(state, 'map.ui.selected'); if (!map) return; const { proj } = state; @@ -104,20 +113,39 @@ export function setStyleFunction(def, vectorStyleId, vectorStyles, layer, state) const { resolutions } = proj.selected; const layerId = def.id; const styleId = lodashGet(def, `vectorStyle.${proj.id}.id`) || vectorStyleId || lodashGet(def, 'vectorStyle.id') || layerId; - const glStyle = vectorStyles[styleId]; + const customPalette = def.custom; + + let glStyle = vectorStyles[styleId]; + if (customPalette && Object.prototype.hasOwnProperty.call(state, 'palettes')) { + const hexColor = state.palettes.custom[customPalette].colors[0]; + const rgbPalette = util.hexToRGBA(hexColor); + glStyle = updateGlStylePalette(glStyle, rgbPalette); + } else if (!styleSelection) { + const customDefaultStyle = state.vectorStyles.customDefault[def.vectorStyle.id]; + if (customDefaultStyle !== undefined) { + glStyle = customDefaultStyle; + } + } + + if (!layer || layer.isWMS || glStyle === undefined) { + return; + } - if (!layer || layer.isWMS) { - return; // WMS breakpoint tile + // This is required to bust the openlayers functionCache + if (Object.prototype.hasOwnProperty.call(glStyle, 'id')) { + delete glStyle.id; } layer = layer.getLayers ? lodashFind(layer.getLayers().getArray(), 'isVector') : layer; + // De-reference the glState object prior to applying the palette to the layer + glStyle = lodashCloneDeep(glStyle); const styleFunction = stylefunction(layer, glStyle, layerId, resolutions); const selectedFeatures = selected[layerId]; - // Handle selected feature style + // Process style of feature selected/clicked in UI if ((glStyle.name !== 'Orbit Tracks') && selectedFeatures) { const extentStartX = layer.getExtent()[0]; const acceptableExtent = extentStartX === 180 @@ -153,6 +181,25 @@ const shouldRenderFeature = (feature, acceptableExtent) => { return false; }; +const updateGlStylePalette = (glStyle, rgbPalette) => { + for (let i = 0; i < glStyle.layers.length; i += 1) { + const thisPaintObj = glStyle.layers[i].paint; + if (Object.prototype.hasOwnProperty.call(thisPaintObj, 'line-color')) { + thisPaintObj['line-color'] = rgbPalette; + } + if (Object.prototype.hasOwnProperty.call(thisPaintObj, 'circle-color')) { + thisPaintObj['circle-color'] = rgbPalette; + } + if (Object.prototype.hasOwnProperty.call(thisPaintObj, 'fill-color')) { + thisPaintObj['fill-color'] = rgbPalette; + } + if (Object.prototype.hasOwnProperty.call(thisPaintObj, 'line-width')) { + thisPaintObj['line-width'] = 2; + } + } + return glStyle; +}; + export function getKey(layerId, groupStr, state) { groupStr = groupStr || state.compare.activeString; if (!isActive(layerId, groupStr, state)) { @@ -216,18 +263,11 @@ export function clearStyleFunction(def, vectorStyleId, vectorStyles, layer, stat export const applyStyle = (def, olVectorLayer, state) => { const { config } = state; const { vectorStyles } = config; - const activeLayers = getActiveLayers(state) || []; - const layerName = def.layer || def.id; - let vectorStyleId = def.vectorStyle.id; + const vectorStyleId = def.vectorStyle.id; if (!vectorStyles || !vectorStyleId) { return; } - activeLayers.forEach((layer) => { - if (layer.id === layerName && layer.custom) { - vectorStyleId = layer.custom; - } - }); setStyleFunction(def, vectorStyleId, vectorStyles, olVectorLayer, state); }; diff --git a/web/js/modules/vector-styles/util.js b/web/js/modules/vector-styles/util.js index 3ce36470d4..46f77d08f6 100644 --- a/web/js/modules/vector-styles/util.js +++ b/web/js/modules/vector-styles/util.js @@ -319,13 +319,13 @@ export function updateVectorSelection(selectionObj, lastSelection, layers, type, const def = lodashFind(layers, { id: key }); if (!def) return; const olLayer = vectorLayers.find((layer) => layer.wv.id === key); - setStyleFunction(def, def.vectorStyle.id, vectorStyles, olLayer, state); + setStyleFunction(def, def.vectorStyle.id, vectorStyles, olLayer, state, true); if (lastSelection[key]) delete lastSelection[key]; } for (const [key] of Object.entries(lastSelection)) { const def = lodashFind(layers, { id: key }); if (!def) return; const olLayer = vectorLayers.find((layer) => layer.wv.id === key); - setStyleFunction(def, def.vectorStyle.id, vectorStyles, olLayer, state); + setStyleFunction(def, def.vectorStyle.id, vectorStyles, olLayer, state, true); } } diff --git a/web/js/ol/lookupimagetile.js b/web/js/ol/lookupimagetile.js index 8a3eeafb9f..aefece4f06 100644 --- a/web/js/ol/lookupimagetile.js +++ b/web/js/ol/lookupimagetile.js @@ -1,5 +1,6 @@ import OlImageTile from 'ol/ImageTile'; import OlTileState from 'ol/TileState'; +import { cloneDeep as lodashCloneDeep } from 'lodash'; class LookupImageTile extends OlImageTile { constructor(lookup, tileCoord, state, src, crossOrigin, tileLoadFunction, sourceOptions) { @@ -32,20 +33,49 @@ LookupImageTile.prototype.load = function() { that.canvas_.height, ); const pixels = imageData.data; + const colorLookupObj = lodashCloneDeep(that.lookup_); + const defaultColor = Object.keys(that.lookup_)[0]; + const paletteColor = that.lookup_[Object.keys(that.lookup_)[0]]; + + // Load black/transparent into the lookup + colorLookupObj['0,0,0,0'] = { + r: 0, + g: 0, + b: 0, + a: 0, + }; for (let i = 0; i < octets; i += 4) { - const source = `${pixels[i + 0]},${ + const pixelColor = `${pixels[i + 0]},${ pixels[i + 1]},${ pixels[i + 2]},${ pixels[i + 3]}`; - const target = that.lookup_[source]; - if (target) { - pixels[i + 0] = target.r; - pixels[i + 1] = target.g; - pixels[i + 2] = target.b; - pixels[i + 3] = target.a; + if (!colorLookupObj[pixelColor]) { + // Handle non-transparent pixels that do not match the palette exactly + const defaultColorArr = defaultColor.split(','); + const pixelColorArr = pixelColor.split(','); + + // Determine difference of pixel from default to replicate anti-aliasing + const rDifference = pixelColorArr[0] - defaultColorArr[0]; + const gDifference = pixelColorArr[1] - defaultColorArr[1]; + const bDifference = pixelColorArr[2] - defaultColorArr[2]; + const alphaValue = pixelColorArr[3]; + + // Store the resulting pair of pixel color & anti-aliased adjusted color + colorLookupObj[pixelColor] = { + r: paletteColor.r + rDifference, + g: paletteColor.g + gDifference, + b: paletteColor.b + bDifference, + a: alphaValue, + }; } + + // set the pixel color + pixels[i + 0] = colorLookupObj[pixelColor].r; + pixels[i + 1] = colorLookupObj[pixelColor].g; + pixels[i + 2] = colorLookupObj[pixelColor].b; + pixels[i + 3] = colorLookupObj[pixelColor].a; } g.putImageData(imageData, 0, 0); From 420918cd4a96bfa7ebb6d62d8a9b1e9cc6429cc2 Mon Sep 17 00:00:00 2001 From: Tom Cariello Date: Wed, 28 Jun 2023 11:08:18 -0400 Subject: [PATCH 8/9] WV-2641 end dates (#4447) * logging * Modified build process to keep time in UTC for non-daily products * Removed logging * Subtract 1 day for non-current monthly products to fix off-by-1-month error --- tasks/build-options/processTemporalLayer.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tasks/build-options/processTemporalLayer.js b/tasks/build-options/processTemporalLayer.js index ca049dc3b4..667f2c9ade 100644 --- a/tasks/build-options/processTemporalLayer.js +++ b/tasks/build-options/processTemporalLayer.js @@ -49,11 +49,18 @@ async function processTemporalLayer (wvLayer, value) { endDate = moment(end, dateFormat).format('YYYY-MM-DDTHH:mm:ss[Z]') } if (interval !== 'P1D') { - endDate = moment(endDate).add(moment.duration(interval)).format('YYYY-MM-DDTHH:mm:ss[Z]') + endDate = moment.utc(endDate).add(moment.duration(interval)).format('YYYY-MM-DDTHH:mm:ss[Z]') + // For monthly products subtract 1 day + if (wvLayer.period === 'monthly') { + endDate = moment.utc(endDate).subtract(1, 'day').format('YYYY-MM-DDTHH:mm:ss[Z]') + } } const regex = new RegExp(/\d+/g) const match = regex.exec(interval) rangeInterval.push(match) + if (endDate.endsWith('T00:00:00Z')) { + endDate = endDate.replace('T00:00:00Z', 'T23:59:59Z') + } dateRangeEnd.push(endDate) } else { // Subdaily Layers From eb5b2906a9583e7dd68fe7bceb8c0a63a98627e1 Mon Sep 17 00:00:00 2001 From: Tom Cariello Date: Wed, 28 Jun 2023 11:28:42 -0400 Subject: [PATCH 9/9] v4.9.0 --- package-lock.json | 127 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 71 insertions(+), 58 deletions(-) diff --git a/package-lock.json b/package-lock.json index cbc6b16f32..8b52d03b3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "worldview", - "version": "4.8.0", + "version": "4.9.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "worldview", - "version": "4.8.0", + "version": "4.9.0", "hasInstallScript": true, "license": "NASA-1.3", "dependencies": { @@ -6965,9 +6965,9 @@ } }, "node_modules/eslint-plugin-es-x": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz", - "integrity": "sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.1.0.tgz", + "integrity": "sha512-AhiaF31syh4CCQ+C5ccJA0VG6+kJK8+5mXKKE7Qs1xcPRg02CDPOj3mWlQxuWS/AYtg7kxrDNgW9YW3vc0Q+Mw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", @@ -7085,19 +7085,19 @@ } }, "node_modules/eslint-plugin-n": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz", - "integrity": "sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.1.tgz", + "integrity": "sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", - "eslint-plugin-es-x": "^6.1.0", - "ignore": "^5.1.1", - "is-core-module": "^2.12.0", + "eslint-plugin-es-x": "^7.1.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.1", "minimatch": "^3.1.2", "resolve": "^1.22.2", - "semver": "^7.5.0" + "semver": "^7.5.3" }, "engines": { "node": ">=16.0.0" @@ -7110,9 +7110,9 @@ } }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -7999,8 +7999,10 @@ }, "node_modules/fsevents": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -8135,16 +8137,16 @@ } }, "node_modules/glob": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz", - "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", + "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "path-scurry": "^1.10.0" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -12548,12 +12550,13 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.7.0", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", + "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -12563,19 +12566,21 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", "dev": true, - "license": "ISC", "engines": { "node": "14 || >=16.14" } }, "node_modules/path-scurry/node_modules/minipass": { - "version": "5.0.0", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "dev": true, - "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/path-to-regexp": { @@ -15422,9 +15427,9 @@ } }, "node_modules/stylelint": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.8.0.tgz", - "integrity": "sha512-x9qBk84F3MEjMEUNCE7MtWmfj9G9y5XzJ0cpQeJdy2l/IoqjC8Ih0N0ytmOTnXE4Yv0J7I1cmVRQUVNSPCxTsA==", + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.9.0.tgz", + "integrity": "sha512-sXtAZi64CllWr6A+8ymDWnlIaYwuAa7XRmGnJxLQXFNnLjd3Izm4HAD+loKVaZ7cpK6SLxhAUX1lwPJKGCn0mg==", "dev": true, "dependencies": { "@csstools/css-parser-algorithms": "^2.2.0", @@ -21708,9 +21713,9 @@ } }, "eslint-plugin-es-x": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-6.2.1.tgz", - "integrity": "sha512-uR34zUhZ9EBoiSD2DdV5kHLpydVEvwWqjteUr9sXRgJknwbKZJZhdJ7uFnaTtd+Nr/2G3ceJHnHXrFhJ67n3Tw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.1.0.tgz", + "integrity": "sha512-AhiaF31syh4CCQ+C5ccJA0VG6+kJK8+5mXKKE7Qs1xcPRg02CDPOj3mWlQxuWS/AYtg7kxrDNgW9YW3vc0Q+Mw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.1.2", @@ -21786,25 +21791,25 @@ } }, "eslint-plugin-n": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.0.tgz", - "integrity": "sha512-akkZTE3hsHBrq6CwmGuYCzQREbVUrA855kzcHqe6i0FLBkeY7Y/6tThCVkjUnjhvRBAlc+8lILcSe5QvvDpeZQ==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.1.tgz", + "integrity": "sha512-CDmHegJN0OF3L5cz5tATH84RPQm9kG+Yx39wIqIwPR2C0uhBGMWfbbOtetR83PQjjidA5aXMu+LEFw1jaSwvTA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", - "eslint-plugin-es-x": "^6.1.0", - "ignore": "^5.1.1", - "is-core-module": "^2.12.0", + "eslint-plugin-es-x": "^7.1.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.1", "minimatch": "^3.1.2", "resolve": "^1.22.2", - "semver": "^7.5.0" + "semver": "^7.5.3" }, "dependencies": { "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -22263,6 +22268,8 @@ }, "fsevents": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -22342,16 +22349,16 @@ } }, "glob": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz", - "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.1.tgz", + "integrity": "sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==", "dev": true, "requires": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", "minimatch": "^9.0.1", "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "path-scurry": "^1.10.0" }, "dependencies": { "brace-expansion": { @@ -25070,19 +25077,25 @@ "version": "1.0.7" }, "path-scurry": { - "version": "1.7.0", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.0.tgz", + "integrity": "sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==", "dev": true, "requires": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2" }, "dependencies": { "lru-cache": { - "version": "9.1.1", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", "dev": true }, "minipass": { - "version": "5.0.0", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "dev": true } } @@ -26852,9 +26865,9 @@ } }, "stylelint": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.8.0.tgz", - "integrity": "sha512-x9qBk84F3MEjMEUNCE7MtWmfj9G9y5XzJ0cpQeJdy2l/IoqjC8Ih0N0ytmOTnXE4Yv0J7I1cmVRQUVNSPCxTsA==", + "version": "15.9.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.9.0.tgz", + "integrity": "sha512-sXtAZi64CllWr6A+8ymDWnlIaYwuAa7XRmGnJxLQXFNnLjd3Izm4HAD+loKVaZ7cpK6SLxhAUX1lwPJKGCn0mg==", "dev": true, "requires": { "@csstools/css-parser-algorithms": "^2.2.0", diff --git a/package.json b/package.json index def97acdfb..8815ee7b82 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "worldview", - "version": "4.8.0", + "version": "4.9.0", "description": "Interactive interface for browsing full-resolution, global satellite imagery", "keywords": [ "NASA",