From 453a552954ee293d29017c41953f15f6899257f5 Mon Sep 17 00:00:00 2001 From: Raphael Ako-Mensah Date: Sat, 30 Aug 2025 19:49:05 +0100 Subject: [PATCH 1/7] lightbox & property detail --- package.json | 3 +- src/components/ImageCounter.js | 13 + src/components/ImageLightbox.js | 87 ++ src/components/PropertyImageCarousel.js | 182 ++- src/components/ThumbnailScrollButtons.js | 44 + yarn.lock | 1494 ++++++++++++++++------ 6 files changed, 1408 insertions(+), 415 deletions(-) create mode 100644 src/components/ImageCounter.js create mode 100644 src/components/ImageLightbox.js create mode 100644 src/components/ThumbnailScrollButtons.js diff --git a/package.json b/package.json index b29a668..3fec95b 100755 --- a/package.json +++ b/package.json @@ -57,7 +57,8 @@ "react-leaflet": "4.x", "react-map-gl": "^7.1.6", "react-slick": "^0.30.3", - "slick-carousel": "^1.8.1" + "slick-carousel": "^1.8.1", + "yet-another-react-lightbox": "^3.25.0" }, "devDependencies": { "autoprefixer": "^10.4.19", diff --git a/src/components/ImageCounter.js b/src/components/ImageCounter.js new file mode 100644 index 0000000..a2821c2 --- /dev/null +++ b/src/components/ImageCounter.js @@ -0,0 +1,13 @@ +import React from 'react' + +const ImageCounter = ({ currentIndex, totalImages, className = '' }) => { + if (totalImages <= 1) return null + + return ( +
+ {currentIndex + 1} / {totalImages} +
+ ) +} + +export default ImageCounter diff --git a/src/components/ImageLightbox.js b/src/components/ImageLightbox.js new file mode 100644 index 0000000..6b52560 --- /dev/null +++ b/src/components/ImageLightbox.js @@ -0,0 +1,87 @@ +import React from 'react' +import Lightbox from 'yet-another-react-lightbox' +import Counter from 'yet-another-react-lightbox/plugins/counter' +import Thumbnails from 'yet-another-react-lightbox/plugins/thumbnails' +import 'yet-another-react-lightbox/styles.css' +import 'yet-another-react-lightbox/plugins/counter.css' +import 'yet-another-react-lightbox/plugins/thumbnails.css' +import { getImage } from 'gatsby-plugin-image' + +const ImageLightbox = ({ + images = [], + isOpen, + onClose, + initialIndex = 0, + className = '' +}) => { + // Convert Gatsby images to lightbox format + const lightboxImages = images.map((image, index) => { + try { + const gatsbyImage = getImage(image.asset.gatsbyImageData) + + // Use the largest available image source + const imageSrc = gatsbyImage.images.sources?.[0]?.srcSet?.split(', ').pop()?.split(' ')[0] || + gatsbyImage.images.fallback.src + + return { + src: imageSrc, + alt: `Property image ${index + 1}`, + width: gatsbyImage.width || 1200, + height: gatsbyImage.height || 800 + } + } catch (error) { + console.warn(`Failed to process image ${index}:`, error) + return null + } + }).filter(Boolean) // Filter out any null images + + if (lightboxImages.length === 0) { + console.warn('No valid images for lightbox') + return null + } + + return ( + null : undefined, + buttonNext: lightboxImages.length <= 1 ? () => null : undefined, + iconNext: () => ( + + + + ), + iconPrev: () => ( + + + + ), + iconClose: () => ( + + + + + ) + }} + className={className} + /> + ) +} + +export default ImageLightbox diff --git a/src/components/PropertyImageCarousel.js b/src/components/PropertyImageCarousel.js index 8661ac5..9b09619 100644 --- a/src/components/PropertyImageCarousel.js +++ b/src/components/PropertyImageCarousel.js @@ -1,9 +1,11 @@ -import React, { useState } from 'react' +import React, { useState, useRef, useEffect } from 'react' import Slider from 'react-slick' import { GatsbyImage, getImage } from 'gatsby-plugin-image' -import { FaChevronLeft, FaChevronRight } from 'react-icons/fa' +import { FaChevronLeft, FaChevronRight, FaExpand } from 'react-icons/fa' import 'slick-carousel/slick/slick.css' import 'slick-carousel/slick/slick-theme.css' +import ImageCounter from './ImageCounter' +import ImageLightbox from './ImageLightbox' // Custom arrow components const PrevArrow = ({ className, style, onClick }) => ( @@ -41,7 +43,12 @@ const PropertyImageCarousel = ({ .filter(img => img?.asset?.gatsbyImageData) const [mainSlider, setMainSlider] = useState(null) - const [thumbnailSlider, setThumbnailSlider] = useState(null) + const [currentSlide, setCurrentSlide] = useState(0) + const [isLightboxOpen, setIsLightboxOpen] = useState(false) + const [canScrollLeft, setCanScrollLeft] = useState(false) + const [canScrollRight, setCanScrollRight] = useState(false) + + const thumbnailContainerRef = useRef(null) // Main slider settings const mainSettings = { @@ -55,28 +62,52 @@ const PropertyImageCarousel = ({ prevArrow: , nextArrow: , adaptiveHeight: false, - asNavFor: thumbnailSlider, + beforeChange: (oldIndex, newIndex) => setCurrentSlide(newIndex), } - - // Thumbnail slider settings - const thumbnailSettings = { - dots: false, - infinite: true, - speed: 500, - slidesToShow: allImages.length > 5 ? 5 : allImages.length, - slidesToScroll: 1, - arrows: false, - centerMode: allImages.length > 5, - focusOnSelect: true, - asNavFor: mainSlider, - responsive: [ - { - breakpoint: 768, - settings: { - slidesToShow: allImages.length > 3 ? 3 : allImages.length, - } - } - ] + + // Check scroll position for thumbnail buttons + const checkScrollPosition = () => { + if (thumbnailContainerRef.current) { + const { scrollLeft, scrollWidth, clientWidth } = thumbnailContainerRef.current + setCanScrollLeft(scrollLeft > 0) + setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 1) + } + } + + // Scroll thumbnail container + const scrollThumbnails = (direction) => { + if (thumbnailContainerRef.current) { + const container = thumbnailContainerRef.current + const thumbnailWidth = 88 // w-20 (80px) + gap-2 (8px) = 88px + const visibleThumbnails = Math.floor(container.clientWidth / thumbnailWidth) + const scrollAmount = thumbnailWidth * Math.max(1, Math.floor(visibleThumbnails / 2)) + + const newScrollLeft = container.scrollLeft + (direction === 'left' ? -scrollAmount : scrollAmount) + container.scrollTo({ + left: newScrollLeft, + behavior: 'smooth' + }) + } + } + + // Handle thumbnail scroll + useEffect(() => { + checkScrollPosition() + const container = thumbnailContainerRef.current + if (container) { + container.addEventListener('scroll', checkScrollPosition) + return () => container.removeEventListener('scroll', checkScrollPosition) + } + }, [allImages.length]) + + // Open lightbox + const openLightbox = () => { + setIsLightboxOpen(true) + } + + // Close lightbox + const closeLightbox = () => { + setIsLightboxOpen(false) } if (allImages.length === 0) { @@ -97,38 +128,107 @@ const PropertyImageCarousel = ({ className="h-full" > {allImages.map((image, index) => ( -
+
+ {/* Fullscreen button overlay - always visible */} +
+ +
+ {/* Clickable overlay for the entire image */} +
))} + + {/* Image Counter */} +
{/* Thumbnail Carousel */} {showThumbnails && allImages.length > 1 && ( -
- setThumbnailSlider(slider)} - > - {allImages.map((image, index) => ( -
-
- +
+ {/* Thumbnail Container with Overlay Buttons */} +
+ {/* Left Scroll Button - Overlay */} + {canScrollLeft && ( + + )} + + {/* Right Scroll Button - Overlay */} + {canScrollRight && ( + + )} + + {/* Thumbnail Container */} +
+ {allImages.map((image, index) => ( +
+
-
- ))} - + ))} +
+
)} + + {/* Image Lightbox */} +
) } diff --git a/src/components/ThumbnailScrollButtons.js b/src/components/ThumbnailScrollButtons.js new file mode 100644 index 0000000..be84cf6 --- /dev/null +++ b/src/components/ThumbnailScrollButtons.js @@ -0,0 +1,44 @@ +import React from 'react' +import { FaChevronLeft, FaChevronRight } from 'react-icons/fa' + +const ThumbnailScrollButtons = ({ + onScrollLeft, + onScrollRight, + canScrollLeft = true, + canScrollRight = true, + className = '' +}) => { + return ( +
+ {/* Left Scroll Button */} + + + {/* Right Scroll Button */} + +
+ ) +} + +export default ThumbnailScrollButtons diff --git a/yarn.lock b/yarn.lock index e14fa08..a407f4e 100755 --- a/yarn.lock +++ b/yarn.lock @@ -1110,7 +1110,7 @@ resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.9", "@babel/runtime@^7.20.13", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.9", "@babel/runtime@^7.20.13", "@babel/runtime@^7.21.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.24.4" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz" integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== @@ -1219,15 +1219,15 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@gatsbyjs/parcel-namer-relative-to-cwd@^2.13.1": - version "2.13.1" - resolved "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-2.13.1.tgz" - integrity sha512-ze0u/CAt6fKV2yQlExkBARi8oqA559lX6/GFWwdtD9S1J4h8Bje70Odl/bcIECvT/w9mWCCQEVtKLvqkraDopw== +"@gatsbyjs/parcel-namer-relative-to-cwd@2.14.0": + version "2.14.0" + resolved "https://registry.yarnpkg.com/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-2.14.0.tgz#46556c54c7c958528c1fdf9bda2a3d96886bdd2c" + integrity sha512-BWIIsz4oPLIUVAWr4Lgw4BGtJjjhb39+oTrXUa6rN0A+vS5qXrpkx1nGzVb5PJ2RJY9Paf4hNLZVW9LaLnGLBA== dependencies: "@babel/runtime" "^7.20.13" "@parcel/namer-default" "2.8.3" "@parcel/plugin" "2.8.3" - gatsby-core-utils "^4.13.1" + gatsby-core-utils "^4.14.0" "@gatsbyjs/reach-router@^2.0.1": version "2.0.1" @@ -2331,9 +2331,9 @@ resolved "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.32.tgz" integrity sha512-bPYT5ECFiblzsVzyURaNhljBH2Gh1t9LowgUwciMrNAhFewLkHT2H0Mto07Y4/3KCOGZHRQll3CTtQZ0X11D/A== -"@types/eslint-scope@^3.7.3": +"@types/eslint-scope@^3.7.7": version "3.7.7" - resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== dependencies: "@types/eslint" "*" @@ -2355,11 +2355,16 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.5": +"@types/estree@*": version "1.0.5" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@^1.0.6": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + "@types/geojson-vt@^3.2.5": version "3.2.5" resolved "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz" @@ -2673,132 +2678,132 @@ async-retry "^1.3.3" debug "^4.3.3" -"@vercel/webpack-asset-relocator-loader@^1.7.3": +"@vercel/webpack-asset-relocator-loader@1.7.3": version "1.7.3" - resolved "https://registry.npmjs.org/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.3.tgz" + resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.3.tgz#e65ca1fd9feb045039788f9b4710e5acc84b01b0" integrity sha512-vizrI18v8Lcb1PmNNUBz7yxPxxXoOeuaVEjTG9MjvDrphjiSxFZrRJ5tIghk+qdLFRCXI5HBCshgobftbmrC5g== dependencies: resolve "^1.10.0" -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== - -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" - -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== - dependencies: - "@webassemblyjs/ast" "1.12.1" +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -2824,11 +2829,6 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== - acorn-jsx@^5.3.1: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" @@ -2856,11 +2856,16 @@ acorn@^7.4.0: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.11.0, acorn@^8.7.1, acorn@^8.8.2: +acorn@^8.11.0, acorn@^8.8.2: version "8.11.3" resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +acorn@^8.14.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + address@1.2.2, address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" @@ -2874,11 +2879,25 @@ aggregate-error@^4.0.0: clean-stack "^4.0.0" indent-string "^5.0.0" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" @@ -2889,6 +2908,16 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ajv@^8.0.1: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" @@ -3007,12 +3036,10 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" +aria-query@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== arr-union@^3.1.0: version "3.1.0" @@ -3027,6 +3054,14 @@ array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" +array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== + dependencies: + call-bound "^1.0.3" + is-array-buffer "^3.0.5" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" @@ -3044,6 +3079,20 @@ array-includes@^3.1.6, array-includes@^3.1.7: get-intrinsic "^1.2.4" is-string "^1.0.7" +array-includes@^3.1.8: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" + array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" @@ -3128,6 +3177,19 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + is-array-buffer "^3.0.4" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" @@ -3209,17 +3271,10 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== - -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" +axe-core@^4.10.0: + version "4.10.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc" + integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg== axios@^0.27.2: version "0.27.2" @@ -3229,6 +3284,15 @@ axios@^0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" +axios@^1.6.4: + version "1.11.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.11.0.tgz#c2ec219e35e414c025b2095e8b8280278478fdb6" + integrity sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + axios@^1.7.4: version "1.7.4" resolved "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz" @@ -3238,12 +3302,10 @@ axios@^1.7.4: form-data "^4.0.0" proxy-from-env "^1.1.0" -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== - dependencies: - dequal "^2.0.3" +axobject-query@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== b4a@^1.6.4: version "1.6.6" @@ -3326,6 +3388,15 @@ babel-plugin-remove-graphql-queries@^5.13.1: "@babel/types" "^7.20.7" gatsby-core-utils "^4.13.1" +babel-plugin-remove-graphql-queries@^5.14.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-5.14.0.tgz#922ac7c23591434b800fedf163fed042105f3aed" + integrity sha512-k5NlcywGAiMklF7LfBSIuPlNYDdHQYTSuDdNDB1shEzxxmvd9akk+bzPE4qf2w/yvMirCkGSJOQud7w33HH2HQ== + dependencies: + "@babel/runtime" "^7.20.13" + "@babel/types" "^7.20.7" + gatsby-core-utils "^4.14.0" + babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" @@ -3382,10 +3453,10 @@ babel-preset-fbjs@^3.4.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -babel-preset-gatsby@^3.13.2: - version "3.13.2" - resolved "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-3.13.2.tgz" - integrity sha512-1zZ3Fpt9jD63inJXWUF2hA6U2cBAMYFDSC5hKqnSSVbNUzKlHUcY0Vbx8azBSaHg27TVp9BitR10zvq5AHP/OQ== +babel-preset-gatsby@^3.14.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-3.14.0.tgz#17bb148e91c93735c056c8030c34f1477dfd2926" + integrity sha512-yE/1gmohqy+Y/v8RYWMyJ1WLrACSkblS8LRcByeNqqBPrDAaG5T/bU1Lhc75BW8j9iLDOkLilun3fGZRu5nacA== dependencies: "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" @@ -3400,8 +3471,8 @@ babel-preset-gatsby@^3.13.2: babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-macros "^3.1.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" - gatsby-core-utils "^4.13.1" - gatsby-legacy-polyfills "^3.13.1" + gatsby-core-utils "^4.14.0" + gatsby-legacy-polyfills "^3.14.0" babel-runtime@^6.26.0: version "6.26.0" @@ -3495,13 +3566,13 @@ bluebird@^3.7.2: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" - content-type "~1.0.4" + content-type "~1.0.5" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -3509,14 +3580,14 @@ body-parser@1.20.1: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.1" + raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -3526,7 +3597,7 @@ body-parser@1.20.2: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -3572,7 +3643,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9, browserslist@^4.22.2, browserslist@^4.23.0, browserslist@^4.6.6: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9, browserslist@^4.22.2, browserslist@^4.23.0, browserslist@^4.6.6: version "4.23.0" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -3582,6 +3653,16 @@ browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^ node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.24.0: + version "4.25.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== + dependencies: + caniuse-lite "^1.0.30001726" + electron-to-chromium "^1.5.173" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" + bser@2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" @@ -3602,9 +3683,9 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -busboy@^1.0.0: +busboy@^1.6.0: version "1.6.0" - resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== dependencies: streamsearch "^1.1.0" @@ -3679,6 +3760,14 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" @@ -3690,6 +3779,24 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -3742,6 +3849,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz" integrity sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw== +caniuse-lite@^1.0.30001726: + version "1.0.30001731" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz#277c07416ea4613ec564e5b0ffb47e7b60f32e2f" + integrity sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg== + capital-case@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz" @@ -4001,10 +4113,10 @@ colord@^2.9.1: resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^1.2.2: - version "1.4.0" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" @@ -4073,14 +4185,14 @@ concat-map@0.0.1: resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" - readable-stream "^2.2.2" + readable-stream "^3.0.2" typedarray "^0.0.6" config-chain@^1.1.11: @@ -4270,10 +4382,10 @@ create-error-class@^3.0.2: dependencies: capture-stack-trace "^1.0.0" -create-gatsby@^3.13.1: - version "3.13.1" - resolved "https://registry.npmjs.org/create-gatsby/-/create-gatsby-3.13.1.tgz" - integrity sha512-CCg8Vz/iQs1cgMEzyRlVGMvNs8ivE/2w+TL6yS56FVe1JjOou8nKYHzxnWxRmBUtC7rTfjxVaTESIotuYBsltQ== +create-gatsby@^3.14.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-3.14.0.tgz#5934709d48b6d3a7ca32466b15349ba5de3359a2" + integrity sha512-HR90NlcTIAeo7OwcFfGubKa35+/Aj7lEfgcV4n4IIPCMy3A+gYwOEQcLIGtmPCVIl1C9AhT3/0XaWbnhAcbyGQ== dependencies: "@babel/runtime" "^7.20.13" @@ -4465,6 +4577,15 @@ data-view-buffer@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + data-view-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz" @@ -4474,6 +4595,15 @@ data-view-byte-length@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + data-view-byte-offset@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz" @@ -4483,6 +4613,15 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-data-view "^1.0.1" + date-fns@^2.30.0: version "2.30.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" @@ -4601,11 +4740,6 @@ dependency-graph@^0.11.0: resolved "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz" integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" @@ -4813,6 +4947,15 @@ dotenv@^8.6.0: resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + duplexer@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" @@ -4848,6 +4991,11 @@ electron-to-chromium@^1.4.668: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.745.tgz" integrity sha512-tRbzkaRI5gbUn5DEvF0dV4TQbMZ5CLkWeTAXmpC9IrYT+GE+x76i9p+o3RJ5l9XmdQlI1pPhVtE9uNcJJ0G0EA== +electron-to-chromium@^1.5.173: + version "1.5.194" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.194.tgz#05e541c3373ba8d967a65c92bc14d60608908236" + integrity sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA== + email-validator@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz" @@ -4912,7 +5060,7 @@ engine.io@~6.5.0: engine.io-parser "~5.2.1" ws "~8.11.0" -enhanced-resolve@^5.15.0, enhanced-resolve@^5.16.0: +enhanced-resolve@^5.15.0: version "5.16.0" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz" integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== @@ -4920,6 +5068,14 @@ enhanced-resolve@^5.15.0, enhanced-resolve@^5.16.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.17.1: + version "5.18.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464" + integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquire.js@^2.1.6: version "2.1.6" resolved "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz" @@ -5019,6 +5175,66 @@ es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23 unbox-primitive "^1.0.2" which-typed-array "^1.1.15" +es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" + integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-negative-zero "^2.0.3" + is-regex "^1.2.1" + is-set "^2.0.3" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.1" + math-intrinsics "^1.1.0" + object-inspect "^1.13.4" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.4" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.19" + es-define-property@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" @@ -5026,12 +5242,17 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: +es-iterator-helpers@^1.0.17: version "1.0.18" resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz" integrity sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA== @@ -5063,6 +5284,13 @@ es-object-atoms@^1.0.0: dependencies: es-errors "^1.3.0" +es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz" @@ -5072,6 +5300,16 @@ es-set-tostringtag@^2.0.3: has-tostringtag "^1.0.2" hasown "^2.0.1" +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz" @@ -5088,6 +5326,15 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== + dependencies: + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" + es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.53, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.64" resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz" @@ -5135,6 +5382,11 @@ escalade@^3.1.1: resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" @@ -5214,27 +5466,26 @@ eslint-plugin-import@^2.27.5: semver "^6.3.1" tsconfig-paths "^3.15.0" -eslint-plugin-jsx-a11y@^6.7.1: - version "6.8.0" - resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== +eslint-plugin-jsx-a11y@^6.8.0: + version "6.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" + integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" + aria-query "^5.3.2" + array-includes "^3.1.8" array.prototype.flatmap "^1.3.2" ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" + axe-core "^4.10.0" + axobject-query "^4.1.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" + hasown "^2.0.2" jsx-ast-utils "^3.3.5" language-tags "^1.0.9" minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.1" eslint-plugin-react-hooks@^4.6.0: version "4.6.0" @@ -5582,6 +5833,11 @@ fast-levenshtein@^2.0.6: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + fastest-levenshtein@^1.0.16: version "1.0.16" resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" @@ -5752,16 +6008,16 @@ flatted@^3.2.9: resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -follow-redirects@^1.14.0, follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - follow-redirects@^1.14.9, follow-redirects@^1.2.4: version "1.15.9" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz" integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" @@ -5769,6 +6025,13 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + foreground-child@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" @@ -5810,6 +6073,17 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + form-urlencoded@^2.0.7: version "2.0.9" resolved "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz" @@ -5922,6 +6196,18 @@ function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: es-abstract "^1.22.1" functions-have-names "^1.2.3" +function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" @@ -5932,10 +6218,10 @@ functions-have-names@^1.2.3: resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gatsby-cli@^5.13.3: - version "5.13.3" - resolved "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-5.13.3.tgz" - integrity sha512-JQTeivvZWuhxE1HRey2sRhwUmkCrs5478fiLR0XRFGin4X1ggCmrQx/DBkJP1TgktdPfNU8t987+slSnO2XzMA== +gatsby-cli@^5.14.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-5.14.0.tgz#dee48b233b1686be7fa27b0f6f9d71c7748a88be" + integrity sha512-NvsWsuZdpNRStmDsNZaYveifFrFqFNy4rnFCLAWWghyxUks8qhGwy6wrz2kcUK+Y2sRJJn1eIjgwzi1AyFn5fQ== dependencies: "@babel/code-frame" "^7.18.6" "@babel/core" "^7.20.12" @@ -5953,13 +6239,12 @@ gatsby-cli@^5.13.3: clipboardy "^4.0.0" common-tags "^1.8.2" convert-hrtime "^3.0.0" - create-gatsby "^3.13.1" + create-gatsby "^3.14.0" envinfo "^7.10.0" execa "^5.1.1" fs-exists-cached "^1.0.0" - fs-extra "^11.1.1" - gatsby-core-utils "^4.13.1" - gatsby-telemetry "^4.13.1" + fs-extra "^11.2.0" + gatsby-core-utils "^4.14.0" hosted-git-info "^3.0.8" is-valid-path "^0.1.1" joi "^17.9.2" @@ -6023,48 +6308,48 @@ gatsby-core-utils@^4.14.0, gatsby-core-utils@^4.5.0: tmp "^0.2.1" xdg-basedir "^4.0.0" -gatsby-graphiql-explorer@^3.13.1: - version "3.13.1" - resolved "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-3.13.1.tgz" - integrity sha512-WR6jv18OhKLwK/hGZ6ZGUd82GFtM6gHz+sOpgsJJx/+uqRjZwqcrH2LSrWRSWUCk7FoZY1rJuBSD1QkOODV01A== +gatsby-graphiql-explorer@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-3.14.1.tgz#592d81f64a17d429386b3dd21e026e22e7800d39" + integrity sha512-QC6XSIIrg4wp5Tb4qE7dkMpC+XDQDDIkQ3dkxajLn8P02tHHAUDLYlJGVHKILp5QQRlTXCPqk4AFZwh21NtJBw== -gatsby-legacy-polyfills@^3.13.1: - version "3.13.1" - resolved "https://registry.npmjs.org/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-3.13.1.tgz" - integrity sha512-NjR3B/rq6dsJuaMmeHlGExdVXJfDqVWERXi9ROfIBt7O3Fwzy5WYgoPeVikVZE06DmeZWlBzuNcGSfc8lilB5g== +gatsby-legacy-polyfills@^3.14.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-3.14.0.tgz#45531260454c5e77f38cd1162a746ee1da4edd2d" + integrity sha512-CsNguwA88GgLgENx6WEuT8DDl+dus8FdedU1h43Xh9XtD8g/EjJGZk/N458+aZ32ulhuacJEexe3d9ASuEQxMQ== dependencies: "@babel/runtime" "^7.20.13" core-js-compat "3.31.0" -gatsby-link@^5.13.1: - version "5.13.1" - resolved "https://registry.npmjs.org/gatsby-link/-/gatsby-link-5.13.1.tgz" - integrity sha512-naQxvgX/rd4Pj5ICL2DcqT30TAENk6wHttcLioxIqW9/UhwAXGkM9QsOJOyUmwbrp37UIKU3K92Ks/cMbRxwXA== +gatsby-link@^5.14.1: + version "5.14.1" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-5.14.1.tgz#d2c852638fb8d12386440bea6b1cdd1b8cf0e829" + integrity sha512-yhQOu6qv5tIZrzyOyKGI14xO0u6p9hBJCd1mOOaGqoWzUKeFqVK1CwHBBdfiSOiGtkB6mwVixA/8XXkZU9Iaqw== dependencies: "@types/reach__router" "^1.3.10" - gatsby-page-utils "^3.13.1" + gatsby-page-utils "^3.14.0" prop-types "^15.8.1" -gatsby-page-utils@^3.13.1: - version "3.13.1" - resolved "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-3.13.1.tgz" - integrity sha512-+/V+ZKPn1Lv3KfeTBV/XUVljwTFQq5kg3T0esu9ygXEz3EVXjG5VjL/IX57awiDm9sLsEALqRuuYLoHpfNHg0A== +gatsby-page-utils@^3.14.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-3.14.0.tgz#a1beaf5cc4805bd95480f5dd95aca7aeb480e8be" + integrity sha512-/Od94fkzkkSzngqglctGMTssQPvHt/Cnjl9hFPM2Clh5UIBSsHjOgOiqM0EPg7VRLXBZypq3DspG2lNaeqCNIA== dependencies: "@babel/runtime" "^7.20.13" bluebird "^3.7.2" chokidar "^3.5.3" fs-exists-cached "^1.0.0" - gatsby-core-utils "^4.13.1" + gatsby-core-utils "^4.14.0" glob "^7.2.3" lodash "^4.17.21" micromatch "^4.0.5" -gatsby-parcel-config@1.13.1: - version "1.13.1" - resolved "https://registry.npmjs.org/gatsby-parcel-config/-/gatsby-parcel-config-1.13.1.tgz" - integrity sha512-zEiDKnq1UQvDDireYQN2TmDsxDf9n2SHYXASHyUTipwsMlNMEi0nLav1vHRQAfzbjw4tabk9Z5kcknkJ6nLqOA== +gatsby-parcel-config@1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/gatsby-parcel-config/-/gatsby-parcel-config-1.14.0.tgz#450a8edc6965b01a02c4d6d69f8080489dd7d317" + integrity sha512-S7RQOo1O5wzHxHB1AHh4xKbg8Jj76VPbSMfVsVVapL2Ht7p1zxrZ7p2pOX3pr5WJnfacREOQwLhlk8rk8TDbGw== dependencies: - "@gatsbyjs/parcel-namer-relative-to-cwd" "^2.13.1" + "@gatsbyjs/parcel-namer-relative-to-cwd" "2.14.0" "@parcel/bundler-default" "2.8.3" "@parcel/compressor-raw" "2.8.3" "@parcel/namer-default" "2.8.3" @@ -6157,21 +6442,20 @@ gatsby-plugin-offline@~6.13.2: lodash "^4.17.21" workbox-build "^4.3.1" -gatsby-plugin-page-creator@^5.13.1: - version "5.13.1" - resolved "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.13.1.tgz" - integrity sha512-WBTQc0cFqaojS1Oh7MjBRSnLCOWWWl3L5t5LEsXwV+4L9OL6D5fLTz7K5xC34OVgfAIryuEKE/M2ZIEk3onVnw== +gatsby-plugin-page-creator@^5.14.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.14.0.tgz#d825a6ca7f5ee5a15490c635d509bfdfbcd552f1" + integrity sha512-H7Yk6Z+kRgOKlco6gFyj9tay+V9eeufZce+NSH6tqHq7pQ56+/X46y4XdeBsrr6wnRs0dBy+Z9rmJTD5w78c2w== dependencies: "@babel/runtime" "^7.20.13" "@babel/traverse" "^7.20.13" "@sindresorhus/slugify" "^1.1.2" chokidar "^3.5.3" fs-exists-cached "^1.0.0" - fs-extra "^11.1.1" - gatsby-core-utils "^4.13.1" - gatsby-page-utils "^3.13.1" - gatsby-plugin-utils "^4.13.1" - gatsby-telemetry "^4.13.1" + fs-extra "^11.2.0" + gatsby-core-utils "^4.14.0" + gatsby-page-utils "^3.14.0" + gatsby-plugin-utils "^4.14.0" globby "^11.1.0" lodash "^4.17.21" @@ -6226,10 +6510,10 @@ gatsby-plugin-sitemap@~6.13.1: minimatch "^3.1.2" sitemap "^7.1.1" -gatsby-plugin-typescript@^5.13.1: - version "5.13.1" - resolved "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.13.1.tgz" - integrity sha512-FsTihoFKWTjzyIaUTndqktL39qMTAb0KyHj9kP+LxTY2FySqHIvFoYc1ycS5q52J76AoWUiGStJuuQLMNq66FQ== +gatsby-plugin-typescript@^5.14.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.14.0.tgz#3c497954af635c2ee65018b85ea00b9184be9a3b" + integrity sha512-rvdNtBKGYV0HpvZ78up39rLu5057pVTil1Z7O65MVIQyB99FGfYy96dygWOQhf9wBh0tt9oFYvaU/VMY9Gwyrg== dependencies: "@babel/core" "^7.20.12" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" @@ -6237,7 +6521,7 @@ gatsby-plugin-typescript@^5.13.1: "@babel/plugin-proposal-optional-chaining" "^7.20.7" "@babel/preset-typescript" "^7.18.6" "@babel/runtime" "^7.20.13" - babel-plugin-remove-graphql-queries "^5.13.1" + babel-plugin-remove-graphql-queries "^5.14.0" gatsby-plugin-utils@^4.13.1: version "4.13.1" @@ -6254,7 +6538,7 @@ gatsby-plugin-utils@^4.13.1: joi "^17.9.2" mime "^3.0.0" -gatsby-plugin-utils@^4.5.0: +gatsby-plugin-utils@^4.14.0, gatsby-plugin-utils@^4.5.0: version "4.14.0" resolved "https://registry.npmjs.org/gatsby-plugin-utils/-/gatsby-plugin-utils-4.14.0.tgz" integrity sha512-w7EZ0C7JA9sG3JiBS2ffGsrZplAbtNk0Junb3UeUFj66CY0MU8UV0rZIzBkz+EMbQvPkxvVJNQu4/tA9ohCvfA== @@ -6269,18 +6553,18 @@ gatsby-plugin-utils@^4.5.0: joi "^17.11.0" mime "^3.0.0" -gatsby-react-router-scroll@^6.13.1: - version "6.13.1" - resolved "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-6.13.1.tgz" - integrity sha512-srBpg/ZHW4miwH/4OWOcspHqr8ZmKLE4DBNvckt0KO4giJerWiGoLj6qePwLFRWZPfV7txJr2kuUzACxarpL5g== +gatsby-react-router-scroll@^6.14.0: + version "6.14.0" + resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-6.14.0.tgz#55c1a21e64ca195bf9ff97e8c12a31e0c1f2ccf2" + integrity sha512-Tx+TsS2JE4BGbImgadKEfESpZeCUkQKbL5OTybNHk9T/E9zDDtECD6IRVCiC1w5LucxvrNwRww9oyeAHCZbbeg== dependencies: "@babel/runtime" "^7.20.13" prop-types "^15.8.1" -gatsby-script@^2.13.0: - version "2.13.0" - resolved "https://registry.npmjs.org/gatsby-script/-/gatsby-script-2.13.0.tgz" - integrity sha512-TGNQGerf1NMJrgJkWxWrW6FFMAuC0L76WlyZgGXmhckPW/x7V1SxZrm0a2Q99kRHyoC59RYl2gTQWHaIwV+ZjA== +gatsby-script@^2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/gatsby-script/-/gatsby-script-2.14.0.tgz#30a62ed010bfd29a8f8802a7fd0850cc4f7030a3" + integrity sha512-A3IV2cXUrXrzW39kTYJMjbvUlHRjoaZVwH0zsfPINldXw9PenIlr5uBOMWx3IWUlKIghN1rBG+sRIyNczPtxyw== gatsby-sharp@^1.13.0: version "1.13.0" @@ -6337,7 +6621,7 @@ gatsby-source-filesystem@^5.13.1, gatsby-source-filesystem@~5.13.1: gatsby-source-sanity@^7.9.1: version "7.9.1" - resolved "https://registry.npmjs.org/gatsby-source-sanity/-/gatsby-source-sanity-7.9.1.tgz" + resolved "https://registry.yarnpkg.com/gatsby-source-sanity/-/gatsby-source-sanity-7.9.1.tgz#37bdc0eaeada24b8327e1645cf99baeffe296a27" integrity sha512-fBy8gKzCqNKfCmZYaRsc6oQQCQOduc8GIg8cQRDCX0DKeaAHjndtmD56lZDgCTjCwvner9stmYBsrIt6QzkIsA== dependencies: "@sanity/client" "^3.4.1" @@ -6398,20 +6682,20 @@ gatsby-transformer-sharp@~5.13.1: semver "^7.5.3" sharp "^0.32.6" -gatsby-worker@^2.13.1: - version "2.13.1" - resolved "https://registry.npmjs.org/gatsby-worker/-/gatsby-worker-2.13.1.tgz" - integrity sha512-CEm+5M2+3PzPcqTaJ0xjNuorQ3d1PfnKG1yqRRPfw8LFdPiycGhZAug/jqx0iTyVWXFHakEmddlykGFEbq54/Q== +gatsby-worker@^2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/gatsby-worker/-/gatsby-worker-2.14.0.tgz#57965ab2ecafed9c7024e72bd97de91d2773e098" + integrity sha512-a5DjKgC9mjhfLhyQO6ZX9tuKoDY8KkJrfBg3g0GHyh8hCzlxYvnOc+URGBG/PmF+7yNBiNjA1dENKKmD0fBWjw== dependencies: "@babel/core" "^7.20.12" "@babel/runtime" "^7.20.13" - fs-extra "^11.1.1" + fs-extra "^11.2.0" signal-exit "^3.0.7" -gatsby@~5.13.4: - version "5.13.4" - resolved "https://registry.npmjs.org/gatsby/-/gatsby-5.13.4.tgz" - integrity sha512-ZV5LL4ipWO2HZSWHWdU2qwS++9tr+fxxF+ScbSwzukrrCTHjTq8+DkpfOMiY498lmTUZ5LvRvT0WQmuVx/gXVQ== +gatsby@^5.14.5: + version "5.14.5" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-5.14.5.tgz#5066afb81b167b9d45368ba78b75cfdec7b9e212" + integrity sha512-j3OO6O1IrUl6jliXCZdLaT3TWgzFO6CvZE8rS0Eh/3f3S6tmv11/jfSeqXCCgKyCNOKhM2aW02rj0ffA7c0ttQ== dependencies: "@babel/code-frame" "^7.18.6" "@babel/core" "^7.20.12" @@ -6440,22 +6724,22 @@ gatsby@~5.13.4: "@types/http-proxy" "^1.17.11" "@typescript-eslint/eslint-plugin" "^5.60.1" "@typescript-eslint/parser" "^5.60.1" - "@vercel/webpack-asset-relocator-loader" "^1.7.3" + "@vercel/webpack-asset-relocator-loader" "1.7.3" acorn-loose "^8.3.0" acorn-walk "^8.2.0" address "1.2.2" anser "^2.1.1" autoprefixer "^10.4.14" - axios "^0.21.1" + axios "^1.6.4" babel-jsx-utils "^1.1.0" babel-loader "^8.3.0" babel-plugin-add-module-exports "^1.0.4" babel-plugin-dynamic-import-node "^2.3.3" - babel-plugin-remove-graphql-queries "^5.13.1" - babel-preset-gatsby "^3.13.2" + babel-plugin-remove-graphql-queries "^5.14.0" + babel-preset-gatsby "^3.14.0" better-opn "^2.1.1" bluebird "^3.7.2" - body-parser "1.20.1" + body-parser "1.20.3" browserslist "^4.21.9" cache-manager "^2.11.1" chalk "^4.1.2" @@ -6480,7 +6764,7 @@ gatsby@~5.13.4: eslint-config-react-app "^6.0.0" eslint-plugin-flowtype "^5.10.0" eslint-plugin-import "^2.27.5" - eslint-plugin-jsx-a11y "^6.7.1" + eslint-plugin-jsx-a11y "^6.8.0" eslint-plugin-react "^7.32.2" eslint-plugin-react-hooks "^4.6.0" eslint-webpack-plugin "^2.7.0" @@ -6493,21 +6777,20 @@ gatsby@~5.13.4: file-loader "^6.2.0" find-cache-dir "^3.3.2" fs-exists-cached "1.0.0" - fs-extra "^11.1.1" - gatsby-cli "^5.13.3" - gatsby-core-utils "^4.13.1" - gatsby-graphiql-explorer "^3.13.1" - gatsby-legacy-polyfills "^3.13.1" - gatsby-link "^5.13.1" - gatsby-page-utils "^3.13.1" - gatsby-parcel-config "1.13.1" - gatsby-plugin-page-creator "^5.13.1" - gatsby-plugin-typescript "^5.13.1" - gatsby-plugin-utils "^4.13.1" - gatsby-react-router-scroll "^6.13.1" - gatsby-script "^2.13.0" - gatsby-telemetry "^4.13.1" - gatsby-worker "^2.13.1" + fs-extra "^11.2.0" + gatsby-cli "^5.14.0" + gatsby-core-utils "^4.14.0" + gatsby-graphiql-explorer "^3.14.1" + gatsby-legacy-polyfills "^3.14.0" + gatsby-link "^5.14.1" + gatsby-page-utils "^3.14.0" + gatsby-parcel-config "1.14.0" + gatsby-plugin-page-creator "^5.14.0" + gatsby-plugin-typescript "^5.14.0" + gatsby-plugin-utils "^4.14.0" + gatsby-react-router-scroll "^6.14.0" + gatsby-script "^2.14.0" + gatsby-worker "^2.14.0" glob "^7.2.3" globby "^11.1.0" got "^11.8.6" @@ -6532,7 +6815,7 @@ gatsby@~5.13.4: mini-css-extract-plugin "1.6.2" mitt "^1.2.0" moment "^2.29.4" - multer "^1.4.5-lts.1" + multer "^2.0.1" node-fetch "^2.6.11" node-html-parser "^5.4.2" normalize-path "^3.0.0" @@ -6540,7 +6823,7 @@ gatsby@~5.13.4: opentracing "^0.14.7" p-defer "^3.0.0" parseurl "^1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" physical-cpu-count "^2.0.0" platform "^1.3.6" postcss "^8.4.24" @@ -6573,15 +6856,15 @@ gatsby@~5.13.4: type-of "^2.0.1" url-loader "^4.1.1" uuid "^8.3.2" - webpack "^5.88.1" - webpack-dev-middleware "^4.3.0" + webpack "~5.98.0" + webpack-dev-middleware "^5.3.4" webpack-merge "^5.9.0" webpack-stats-plugin "^1.1.3" webpack-virtual-modules "^0.5.0" xstate "^4.38.0" yaml-loader "^0.8.0" optionalDependencies: - gatsby-sharp "^1.13.0" + gatsby-sharp "^1.14.0" generate-robotstxt@^8.0.3: version "8.0.3" @@ -6621,6 +6904,22 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + get-it@^6.1.1: version "6.1.1" resolved "https://registry.npmjs.org/get-it/-/get-it-6.1.1.tgz" @@ -6655,6 +6954,14 @@ get-port@^3.2.0: resolved "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz" integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^5.1.0: version "5.2.0" resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" @@ -6681,6 +6988,15 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + get-value@^2.0.2, get-value@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" @@ -6781,6 +7097,14 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" +globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" @@ -6800,6 +7124,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + got@^11.8.6: version "11.8.6" resolved "https://registry.npmjs.org/got/-/got-11.8.6.tgz" @@ -6922,11 +7251,23 @@ has-proto@^1.0.1, has-proto@^1.0.3: resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" @@ -7172,6 +7513,15 @@ internal-slot@^1.0.7: hasown "^2.0.0" side-channel "^1.0.4" +internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.2" + side-channel "^1.1.0" + into-stream@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz" @@ -7218,6 +7568,15 @@ is-array-buffer@^3.0.4: call-bind "^1.0.2" get-intrinsic "^1.2.1" +is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" @@ -7242,6 +7601,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" @@ -7257,6 +7623,14 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-boolean-object@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" @@ -7283,6 +7657,15 @@ is-data-view@^1.0.1: dependencies: is-typed-array "^1.1.13" +is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== + dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + is-typed-array "^1.1.13" + is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" @@ -7290,6 +7673,14 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" +is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" + integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + is-docker@^2.0.0, is-docker@^2.1.1, is-docker@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" @@ -7329,6 +7720,13 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== + dependencies: + call-bound "^1.0.3" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" @@ -7400,6 +7798,14 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" @@ -7450,6 +7856,16 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" @@ -7491,6 +7907,13 @@ is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: dependencies: call-bind "^1.0.7" +is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== + dependencies: + call-bound "^1.0.3" + is-ssh@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz" @@ -7520,6 +7943,14 @@ is-string@^1.0.5, is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" +is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" @@ -7527,6 +7958,15 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" + integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== + dependencies: + call-bound "^1.0.2" + has-symbols "^1.1.0" + safe-regex-test "^1.1.0" + is-typed-array@^1.1.13: version "1.1.13" resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz" @@ -7534,6 +7974,13 @@ is-typed-array@^1.1.13: dependencies: which-typed-array "^1.1.14" +is-typed-array@^1.1.14, is-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" @@ -7579,6 +8026,13 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakref@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + is-weakset@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz" @@ -8199,13 +8653,6 @@ make-error@^1.3.0: resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -map-age-cleaner@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.0: version "0.2.2" resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" @@ -8255,6 +8702,11 @@ mapbox-gl@3.x: tinyqueue "^3.0.0" vt-pbf "^3.1.3" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" @@ -8270,15 +8722,7 @@ media-typer@0.3.0: resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -mem@^8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz" - integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== - dependencies: - map-age-cleaner "^0.1.3" - mimic-fn "^3.1.0" - -memfs@^3.1.2, memfs@^3.2.2: +memfs@^3.1.2, memfs@^3.4.3: version "3.6.0" resolved "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz" integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== @@ -8349,7 +8793,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -8371,11 +8815,6 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-fn@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz" - integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== - mimic-fn@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" @@ -8453,7 +8892,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.1, mkdirp@^0.5.4: +mkdirp@^0.5.1, mkdirp@^0.5.6: version "0.5.6" resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -8501,18 +8940,18 @@ msgpackr@^1.5.4: optionalDependencies: msgpackr-extract "^3.0.2" -multer@^1.4.5-lts.1: - version "1.4.5-lts.1" - resolved "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz" - integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== +multer@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/multer/-/multer-2.0.2.tgz#08a8aa8255865388c387aaf041426b0c87bf58dd" + integrity sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw== dependencies: append-field "^1.0.0" - busboy "^1.0.0" - concat-stream "^1.5.2" - mkdirp "^0.5.4" + busboy "^1.6.0" + concat-stream "^2.0.0" + mkdirp "^0.5.6" object-assign "^4.1.1" - type-is "^1.6.4" - xtend "^4.0.0" + type-is "^1.6.18" + xtend "^4.0.2" murmurhash-js@^1.0.0: version "1.0.0" @@ -8652,6 +9091,11 @@ node-releases@^2.0.14: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" @@ -8738,6 +9182,11 @@ object-inspect@^1.13.1: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== +object-inspect@^1.13.3, object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" @@ -8753,6 +9202,18 @@ object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" +object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + object.entries@^1.1.7: version "1.1.8" resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz" @@ -8762,7 +9223,7 @@ object.entries@^1.1.7: define-properties "^1.2.1" es-object-atoms "^1.0.0" -object.fromentries@^2.0.7: +object.fromentries@^2.0.7, object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -8886,6 +9347,15 @@ os-tmpdir@~1.0.2: resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + p-any@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-any/-/p-any-4.0.0.tgz" @@ -8904,11 +9374,6 @@ p-cancelable@^3.0.0: resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" - integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== - p-defer@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz" @@ -9134,6 +9599,11 @@ path-scurry@^1.10.2: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" @@ -9167,6 +9637,11 @@ picocolors@^1.0.0: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" @@ -9689,7 +10164,7 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.11.2, qs@^6.12.3: +qs@6.13.0, qs@^6.11.2, qs@^6.12.3: version "6.13.0" resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== @@ -9748,16 +10223,6 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-body@2.5.2, raw-body@^2.3.0: version "2.5.2" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" @@ -9946,7 +10411,7 @@ read@^1.0.7: dependencies: mute-stream "~0.0.4" -readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@3, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -9955,7 +10420,7 @@ readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stre string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -10022,6 +10487,20 @@ reflect.getprototypeof@^1.0.4: globalthis "^1.0.3" which-builtin-type "^1.1.3" +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" + regenerate-unicode-properties@^10.1.0: version "10.1.1" resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" @@ -10066,6 +10545,18 @@ regexp.prototype.flags@^1.5.2: es-errors "^1.3.0" set-function-name "^2.0.1" +regexp.prototype.flags@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" + regexpp@^3.1.0: version "3.2.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" @@ -10291,6 +10782,17 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" +safe-array-concat@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" + integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + has-symbols "^1.1.0" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" @@ -10301,6 +10803,14 @@ safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz" @@ -10310,6 +10820,15 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" @@ -10350,7 +10869,7 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0, schema-utils@^3.3.0: +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.3.0: 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== @@ -10359,6 +10878,16 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0, schema-utils@^3.3 ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0, schema-utils@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae" + integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + "semver@2 || 3 || 4 || 5", semver@^5.7.1: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" @@ -10416,7 +10945,7 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.1: +serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== @@ -10443,7 +10972,7 @@ set-blocking@^2.0.0: resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-length@^1.2.1: +set-function-length@^1.2.1, set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -10465,6 +10994,15 @@ set-function-name@^2.0.1, set-function-name@^2.0.2: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + set-value@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" @@ -10528,6 +11066,35 @@ shell-quote@^1.7.3: resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" @@ -10538,6 +11105,17 @@ side-channel@^1.0.4, side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" @@ -10790,6 +11368,14 @@ statuses@2.0.1: resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + stream-parser@~0.3.1: version "0.3.1" resolved "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz" @@ -10870,6 +11456,15 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" +string.prototype.includes@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" + integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + string.prototype.matchall@^4.0.10: version "4.0.11" resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz" @@ -10888,6 +11483,19 @@ string.prototype.matchall@^4.0.10: set-function-name "^2.0.2" side-channel "^1.0.6" +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" + string.prototype.trim@^1.2.9: version "1.2.9" resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz" @@ -10907,6 +11515,16 @@ string.prototype.trimend@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz" @@ -11218,7 +11836,18 @@ tar-stream@^3.1.5: fast-fifo "^1.2.0" streamx "^2.15.0" -terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: +terser-webpack-plugin@^5.3.11: + version "5.3.14" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser-webpack-plugin@^5.3.9: version "5.3.10" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz" integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== @@ -11239,6 +11868,16 @@ terser@^5.2.0, terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" +terser@^5.31.1: + version "5.43.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" + integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.14.0" + commander "^2.20.0" + source-map-support "~0.5.20" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" @@ -11433,7 +12072,7 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@^1.6.4, type-is@~1.6.18: +type-is@^1.6.18, type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -11460,6 +12099,15 @@ typed-array-buffer@^1.0.2: es-errors "^1.3.0" is-typed-array "^1.1.13" +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + typed-array-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz" @@ -11471,6 +12119,17 @@ typed-array-byte-length@^1.0.1: has-proto "^1.0.3" is-typed-array "^1.1.13" +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== + dependencies: + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" + typed-array-byte-offset@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz" @@ -11483,6 +12142,19 @@ typed-array-byte-offset@^1.0.2: has-proto "^1.0.3" is-typed-array "^1.1.13" +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" + typed-array-length@^1.0.6: version "1.0.6" resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz" @@ -11495,6 +12167,18 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" @@ -11534,6 +12218,16 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== + dependencies: + call-bound "^1.0.3" + has-bigints "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz" @@ -11614,6 +12308,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + upper-case-first@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz" @@ -11753,17 +12455,16 @@ webpack-assets-manifest@^5.1.0: schema-utils "^3.3.0" tapable "^2.2.1" -webpack-dev-middleware@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz" - integrity sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w== +webpack-dev-middleware@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== dependencies: - colorette "^1.2.2" - mem "^8.1.1" - memfs "^3.2.2" - mime-types "^2.1.30" + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" range-parser "^1.2.1" - schema-utils "^3.0.0" + schema-utils "^4.0.0" webpack-merge@^5.9.0: version "5.10.0" @@ -11797,21 +12498,20 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== -webpack@^5.88.1: - version "5.91.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-assertions "^1.9.0" - browserslist "^4.21.10" +webpack@~5.98.0: + version "5.98.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.98.0.tgz#44ae19a8f2ba97537978246072fb89d10d1fbd17" + integrity sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.14.0" + browserslist "^4.24.0" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" + enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" @@ -11821,9 +12521,9 @@ webpack@^5.88.1: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.2.0" + schema-utils "^4.3.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" + terser-webpack-plugin "^5.3.11" watchpack "^2.4.1" webpack-sources "^3.2.3" @@ -11846,6 +12546,17 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== + dependencies: + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" + which-builtin-type@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz" @@ -11864,7 +12575,26 @@ which-builtin-type@^1.1.3: which-collection "^1.0.1" which-typed-array "^1.1.9" -which-collection@^1.0.1: +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" + integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== + dependencies: + call-bound "^1.0.2" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.1.0" + is-finalizationregistry "^1.1.0" + is-generator-function "^1.0.10" + is-regex "^1.2.1" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" + +which-collection@^1.0.1, which-collection@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz" integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== @@ -11890,6 +12620,19 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.2" +which-typed-array@^1.1.16, which-typed-array@^1.1.19: + version "1.1.19" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" @@ -12113,7 +12856,7 @@ xstate@^4.38.0: resolved "https://registry.npmjs.org/xstate/-/xstate-4.38.3.tgz" integrity sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw== -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -12187,6 +12930,11 @@ yargs@^15.3.1, yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yet-another-react-lightbox@^3.25.0: + version "3.25.0" + resolved "https://registry.yarnpkg.com/yet-another-react-lightbox/-/yet-another-react-lightbox-3.25.0.tgz#9d3f92b9ac7b58cbbe007311d499c2ed34711bcc" + integrity sha512-NaCeEXCpdwoTvoOpxNK9gdW8+oHs79yVH+D2YeVQWRjH5i32e5CoXndAAFP2p8awzVYfSonherrE9JMTpfD3EA== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" From ad40a810db817a0bc87a0c3f3d186063c0b9fa0a Mon Sep 17 00:00:00 2001 From: Raphael Ako-Mensah Date: Sat, 30 Aug 2025 19:59:35 +0100 Subject: [PATCH 2/7] lightbox zoom --- src/components/ImageLightbox.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/ImageLightbox.js b/src/components/ImageLightbox.js index 6b52560..85ebcfc 100644 --- a/src/components/ImageLightbox.js +++ b/src/components/ImageLightbox.js @@ -2,6 +2,7 @@ import React from 'react' import Lightbox from 'yet-another-react-lightbox' import Counter from 'yet-another-react-lightbox/plugins/counter' import Thumbnails from 'yet-another-react-lightbox/plugins/thumbnails' +import Zoom from 'yet-another-react-lightbox/plugins/zoom' import 'yet-another-react-lightbox/styles.css' import 'yet-another-react-lightbox/plugins/counter.css' import 'yet-another-react-lightbox/plugins/thumbnails.css' @@ -46,7 +47,7 @@ const ImageLightbox = ({ close={onClose} index={Math.min(initialIndex, lightboxImages.length - 1)} slides={lightboxImages} - plugins={[Counter, Thumbnails]} + plugins={[Counter, Thumbnails, Zoom]} carousel={{ finite: true, preload: 2 From 79718420cea5074c8879750b1c9dce8aa0fd213b Mon Sep 17 00:00:00 2001 From: Raphael Ako-Mensah Date: Sat, 6 Sep 2025 12:23:09 +0100 Subject: [PATCH 3/7] property management form --- src/context/modalContext.js | 3 ++- src/utils/formSubmission.js | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/context/modalContext.js b/src/context/modalContext.js index e35442c..9da06b2 100755 --- a/src/context/modalContext.js +++ b/src/context/modalContext.js @@ -7,7 +7,8 @@ export const FORM_TYPES = { PROPERTY_SELLER: 'propertySeller', BROKER_REFERRAL: 'brokerReferral', PROPERTY_ENQUIRY: 'propertyEnquiry', - GENERAL_CONTACT: 'generalContact' + GENERAL_CONTACT: 'generalContact', + PROPERTY_MANAGEMENT: 'propertyManagement' } export const ModalProvider = ({ children }) => { diff --git a/src/utils/formSubmission.js b/src/utils/formSubmission.js index 247be71..1122707 100644 --- a/src/utils/formSubmission.js +++ b/src/utils/formSubmission.js @@ -73,4 +73,13 @@ export const submitPropertyEnquiryForm = (formData) => { */ export const submitGeneralContactForm = (formData) => { return submitToNetlify(formData, "general-contact"); +}; + +/** + * Submit property management form + * @param {Object} formData - The form data + * @returns {Promise} - The form submission response + */ +export const submitPropertyManagementForm = (formData) => { + return submitToNetlify(formData, "property-management"); }; \ No newline at end of file From 42c990ec17bbd6885b05e61183856487e340735c Mon Sep 17 00:00:00 2001 From: Raphael Ako-Mensah Date: Sat, 6 Sep 2025 19:16:02 +0100 Subject: [PATCH 4/7] sanity rendering --- src/components/SanityBlockRenderer.js | 156 ++++++++++++++++++++++++++ src/pages/properties.js | 21 ++-- src/templates/PropertyDetail.js | 68 +---------- 3 files changed, 174 insertions(+), 71 deletions(-) create mode 100644 src/components/SanityBlockRenderer.js diff --git a/src/components/SanityBlockRenderer.js b/src/components/SanityBlockRenderer.js new file mode 100644 index 0000000..592d798 --- /dev/null +++ b/src/components/SanityBlockRenderer.js @@ -0,0 +1,156 @@ +import React from "react"; + +export default function SanityBlockRenderer({ blocks }) { + if (!blocks || !blocks.length) return

No description available

; + + const renderMarks = (text, marks = [], markDefs = []) => { + let element = text; + marks.forEach(mark => { + if (mark === "strong") element = {element}; + else if (mark === "em") element = {element}; + else if (mark === "underline") element = {element}; + else if (mark === "strike-through") element = {element}; + else { + // Handle link annotation + const def = markDefs.find(def => def._key === mark && def._type === "link"); + if (def && def.href) { + element = ( + + {element} + + ); + } + } + }); + return element; + }; + + const output = []; + let listType = null; + let listItems = []; + let pendingExtraMarginForNextList = false; + let currentListExtraMargin = false; + let pendingZeroMarginForNextList = false; + let currentListZeroMargin = false; + + blocks.forEach((block, idx) => { + if (block._type !== "block" || !block.children) return; + + const content = block.children.map((child, i) => + + {renderMarks(child.text, child.marks, block.markDefs)} + + ); + + // Determine if this block has any non-empty text content + const isEmptyContent = block.children + .map(child => (child.text || "").trim()) + .join("") + .trim().length === 0; + + // Get full text content for heading detection + const blockText = (block.children || []) + .map(child => child.text || "") + .join("") + .trim(); + + // Handle lists (bullet or number) + if (block.listItem) { + // If starting a new list type, flush previous + if (!listType || listType !== block.listItem) { + if (listType && listItems.length) { + const marginClass = currentListZeroMargin + ? "mt-0 mb-4" + : (currentListExtraMargin ? "mt-6 mb-4" : "mt-3 mb-4"); + output.push( + listType === "number" + ?
    <>{listItems}
+ :
    <>{listItems}
+ ); + } + listType = block.listItem; + listItems = []; + currentListExtraMargin = pendingExtraMarginForNextList; + pendingExtraMarginForNextList = false; + currentListZeroMargin = pendingZeroMarginForNextList; + pendingZeroMarginForNextList = false; + } + if (!isEmptyContent) { + listItems.push(
  • {content}
  • ); + } + } else { + // If previously in a list, flush it + if (listType && listItems.length) { + const marginClass = currentListZeroMargin + ? "mt-0 mb-4" + : (currentListExtraMargin ? "mt-6 mb-4" : "mt-3 mb-4"); + output.push( + listType === "number" + ?
      <>{listItems}
    + :
      <>{listItems}
    + ); + listType = null; + listItems = []; + } + if (isEmptyContent) { + return; // Skip rendering empty paragraphs/blocks + } + switch (block.style) { + case "h1": + output.push(

    {content}

    ); + break; + case "h2": + output.push(

    {content}

    ); + break; + case "h3": + output.push(

    {content}

    ); + break; + case "blockquote": + output.push(
    {content}
    ); + break; + default: + // Nudge down the "Key Features:" heading visually and ensure bullets start immediately after + if (blockText.toLowerCase() === "key features:") { + output.push(

    {content}

    ); + pendingExtraMarginForNextList = false; + pendingZeroMarginForNextList = true; + } else { + // Detect lead-in headings like "Interior & Features:" followed by normal text in same paragraph + const firstChild = (block.children || [])[0]; + const isLeadInHeading = ( + firstChild && + Array.isArray(firstChild.marks) && + firstChild.marks.includes("strong") && + /:\\s*$/.test((firstChild.text || "")) + ) || ( + firstChild && + Array.isArray(firstChild.marks) && + firstChild.marks.includes("strong") && + (block.children || []).length > 1 + ); + if (isLeadInHeading) { + // Keep only the lead-in span bold via marks; paragraph itself not bold + output.push(

    {content}

    ); + } else { + output.push(

    {content}

    ); + } + } + } + } + }); + + // If at end and still have list items, flush them + if (listType && listItems.length) { + const marginClass = currentListZeroMargin + ? "mt-0 mb-4" + : (currentListExtraMargin ? "mt-6 mb-4" : "mt-3 mb-4"); + output.push( + listType === "number" + ?
      <>{listItems}
    + :
      <>{listItems}
    + ); + } + + // Add Tailwind prose for beautiful, consistent typography + return
    {output}
    ; +} diff --git a/src/pages/properties.js b/src/pages/properties.js index 0defa4d..af7f885 100644 --- a/src/pages/properties.js +++ b/src/pages/properties.js @@ -44,14 +44,15 @@ const PropertiesPage = ({ data }) => { location: '', propertyType: '', status: '', - sortBy: 'newest' + sortBy: 'newest', + includeSold: true }; const [filters, setFilters] = useState(initialFilters); const handleInputChange = (e) => { - const { name, value } = e.target; - setFilters(prev => ({ ...prev, [name]: value })); + const { name, value, type, checked } = e.target; + setFilters(prev => ({ ...prev, [name]: type === 'checkbox' ? checked : value })); setCurrentPage(1); // Reset to first page when filters change }; @@ -78,11 +79,16 @@ const PropertiesPage = ({ data }) => { // Check if any filters are active const hasActiveFilters = Object.entries(filters).some(([key, value]) => - key !== 'sortBy' && value !== '' + key !== 'sortBy' && key !== 'includeSold' && value !== '' ); // Filter properties based on user selections const filteredProperties = allProperties.filter(property => { + // Exclude sold properties if includeSold is unchecked + if (filters.includeSold === false && property.status === 'sold') { + return false; + } + // Filter by minimum bedrooms if (filters.minBedrooms && (property.bedrooms < parseInt(filters.minBedrooms) || !property.bedrooms)) { return false; @@ -118,9 +124,9 @@ const PropertiesPage = ({ data }) => { const sortedProperties = [...filteredProperties].sort((a, b) => { switch(filters.sortBy) { case 'newest': - return new Date(b.publishedAt || 0) - new Date(a.publishedAt || 0); + return new Date(b.publishedAt || b._createdAt || 0) - new Date(a.publishedAt || a._createdAt || 0); case 'oldest': - return new Date(a.publishedAt || 0) - new Date(b.publishedAt || 0); + return new Date(a.publishedAt || a._createdAt || 0) - new Date(b.publishedAt || b._createdAt || 0); case 'price-low': return (a.price || 0) - (b.price || 0); case 'price-high': @@ -158,7 +164,7 @@ const PropertiesPage = ({ data }) => { /> Our Properties} subtitle="Browse our selection of available and past properties. Filter by your preferences to find your perfect home." eyebrowText="PROPERTIES" heroImage={heroImage} @@ -333,6 +339,7 @@ export const query = graphql` publishedAt tenure councilTaxBand + _createdAt } } diff --git a/src/templates/PropertyDetail.js b/src/templates/PropertyDetail.js index 43eb765..8c24667 100644 --- a/src/templates/PropertyDetail.js +++ b/src/templates/PropertyDetail.js @@ -6,6 +6,7 @@ import Seo from '../components/seo' import PropertyImageCarousel from '../components/PropertyImageCarousel' import PropertyMap from '../components/PropertyMap' import ContactButton from '../components/ContactButton' +import SanityBlockRenderer from '../components/SanityBlockRenderer' import { FORM_TYPES } from '../context/modalContext' // Animation variants @@ -247,70 +248,7 @@ const PropertyDetailTemplate = ({ data }) => {

    Description

    - {description && description.length > 0 ? ( -
    - {description.map((block) => { - // Skip if not a block or no children - if (block._type !== 'block' || !block.children) { - return null; - } - - // Simple text renderer with basic formatting - const renderText = (text, marks = []) => { - if (!text) return null; - - let element = text; - - // Apply marks if present - if (marks && marks.length > 0) { - marks.forEach(mark => { - switch(mark) { - case 'strong': - element = {element}; - break; - case 'em': - element = {element}; - break; - case 'underline': - element = {element}; - break; - case 'strike-through': - element = {element}; - break; - default: - break; - } - }); - } - - return element; - }; - - // Get all text content from children - const content = block.children.map((child, i) => ( - - {renderText(child.text, child.marks)} - - )); - - // Simple styling based on block style - switch(block.style) { - case 'h1': - return

    {content}

    ; - case 'h2': - return

    {content}

    ; - case 'h3': - return

    {content}

    ; - case 'blockquote': - return
    {content}
    ; - default: - return

    {content}

    ; - } - })} -
    - ) : ( -

    No description available

    - )} +
    {amenities && amenities.length > 0 && ( @@ -596,6 +534,8 @@ export const query = graphql` _key _type style + listItem + level children { _key _type From 7e9d727229041ce083795dc2c80597b1e97fca1d Mon Sep 17 00:00:00 2001 From: Raphael Ako-Mensah Date: Sat, 6 Sep 2025 19:17:06 +0100 Subject: [PATCH 5/7] new pages --- src/components/CTABanner.js | 91 +++++- src/components/HeroVariant.js | 273 ++++++++++++++++ src/components/PageHero.js | 13 +- src/components/PropertyCard.js | 18 +- src/components/PropertyFilter.js | 13 + src/components/SectionHeader.js | 14 +- src/components/ServiceGrid.js | 234 ++++++++++++++ src/components/ServiceTable.js | 292 +++++++++++++++++ src/components/ServiceTimeline.js | 174 +++++++++++ src/components/drawer.js | 73 ++++- src/components/footer.js | 5 +- src/components/header.js | 109 ++++++- src/components/modal.js | 324 ++++++++++++++++++- src/data/navItems.json | 25 +- src/pages/about.js | 44 ++- src/pages/faq.js | 2 +- src/pages/services.js | 287 +++++++++++------ src/pages/services/for-buyers-investors.js | 344 +++++++++++++++++++++ src/pages/services/for-homeowners.js | 324 +++++++++++++++++++ src/pages/services/for-landlords.js | 288 +++++++++++++++++ 20 files changed, 2800 insertions(+), 147 deletions(-) create mode 100644 src/components/HeroVariant.js create mode 100644 src/components/ServiceGrid.js create mode 100644 src/components/ServiceTable.js create mode 100644 src/components/ServiceTimeline.js create mode 100644 src/pages/services/for-buyers-investors.js create mode 100644 src/pages/services/for-homeowners.js create mode 100644 src/pages/services/for-landlords.js diff --git a/src/components/CTABanner.js b/src/components/CTABanner.js index 81116d9..2cf7bf2 100644 --- a/src/components/CTABanner.js +++ b/src/components/CTABanner.js @@ -13,19 +13,25 @@ const fadeIn = { } /** - * Reusable CTA Banner component + * Reusable CTA Banner component with audience variants * @param {Object} props - Component props - * @param {string} props.heading - The heading text for the CTA + * @param {string|React.ReactNode} props.heading - The heading text for the CTA (prefer headingJSX for styled content) + * @param {React.ReactNode} props.headingJSX - JSX content for the heading (takes precedence over heading) * @param {string} props.description - The description text for the CTA - * @param {string} props.buttonText - The text for the CTA button (defaults to "Get Your Free Cash Offer") + * @param {string} props.buttonText - The text for the CTA button + * @param {string} props.variant - The visual variant ("urgent", "business", "supportive", "default") + * @param {string} props.icon - Icon type for the banner ("clock", "chart-up", "shield-check") * @param {string} props.className - Additional CSS classes for the container * @param {string} props.formType - The type of form to display (defaults to PROPERTY_SELLER) * @param {Object} props.data - Additional data to pass to the form */ const CTABanner = ({ - heading = "Ready to sell your property?", + heading = "Ready to sell your property?", + headingJSX = null, description = "Contact us today for a no-obligation cash offer. We can complete the purchase in as little as 30 days.", buttonText = "Get Your Free Cash Offer", + variant = "default", + icon = null, className = "", formType = FORM_TYPES.PROPERTY_SELLER, data = null @@ -39,18 +45,85 @@ const CTABanner = ({ }); }; + // Variant styling configurations - using consistent brand colors + const variantStyles = { + default: { + gradient: "bg-gradient-to-b from-primary-600 to-primary-700", + textColor: "text-white", + buttonBg: "bg-white", + buttonText: "text-primary-600", + buttonHover: "hover:bg-neutral-100" + }, + urgent: { + gradient: "bg-gradient-to-br from-primary-600 to-primary-700", + textColor: "text-white", + buttonBg: "bg-white", + buttonText: "text-primary-600", + buttonHover: "hover:bg-neutral-100 font-bold" + }, + business: { + gradient: "bg-gradient-to-br from-primary-700 to-primary-600", + textColor: "text-white", + buttonBg: "bg-white", + buttonText: "text-primary-700", + buttonHover: "hover:bg-neutral-100 font-semibold" + }, + supportive: { + gradient: "bg-gradient-to-br from-primary-600/80 to-primary-600", + textColor: "text-white", + buttonBg: "bg-white", + buttonText: "text-primary-600", + buttonHover: "hover:bg-neutral-100 font-medium rounded-lg" + } + }; + + const currentStyle = variantStyles[variant] || variantStyles.default; + + // Icon components + const IconComponent = ({ type }) => { + const iconClass = "w-8 h-8 mb-4 mx-auto"; + + switch (type) { + case "clock": + return ( + + + + ); + case "chart-up": + return ( + + + + ); + case "shield-check": + return ( + + + + ); + default: + return null; + } + }; + return ( -

    - {heading} + {icon && ( +
    + +
    + )} +

    + {headingJSX || heading}

    -

    +

    {description}

    {buttonText} diff --git a/src/components/HeroVariant.js b/src/components/HeroVariant.js new file mode 100644 index 0000000..91e158f --- /dev/null +++ b/src/components/HeroVariant.js @@ -0,0 +1,273 @@ +import React from 'react' +import { motion } from 'framer-motion' +import { GatsbyImage } from 'gatsby-plugin-image' +import { useModal, FORM_TYPES } from '../context/modalContext' + +// Animation variants +const fadeIn = { + hidden: { opacity: 0, y: 20 }, + visible: { + opacity: 1, + y: 0, + transition: { duration: 0.6 } + } +} + +const fadeInUp = { + hidden: { opacity: 0, y: 40 }, + visible: { + opacity: 1, + y: 0, + transition: { duration: 0.8, ease: [0.6, 0.05, 0.01, 0.9] } + } +} + +const staggerChildren = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + staggerChildren: 0.2, + delayChildren: 0.1 + } + } +} + +/** + * Enhanced Hero component with audience-specific variants + * @param {string} variant - The visual variant ("urgency", "business", "supportive", "default") + * @param {string|React.ReactNode} title - Main heading (legacy; prefer titleJSX for styled content) + * @param {React.ReactNode} titleJSX - JSX heading content (takes precedence over title) + * @param {string} subtitle - Support text below the heading + * @param {string} eyebrowText - Optional label text displayed above heading + * @param {Object} heroImage - Gatsby image data from graphql query + * @param {string} ctaText - Call-to-action button text + * @param {string} formType - Form type to trigger + * @param {boolean} showStats - Whether to display statistics + * @param {Array} stats - Array of stat objects {value, label} + * @param {boolean} splitLayout - Whether to use split layout for business variant + * @param {string} className - Additional CSS classes + */ +const HeroVariant = ({ + variant = "default", + title, + titleJSX, + subtitle, + eyebrowText, + heroImage, + ctaText, + formType = FORM_TYPES.PROPERTY_SELLER, + showStats = false, + stats = [], + splitLayout = false, + className = "" +}) => { + const { openModal } = useModal() + + // Deprecated: createMarkup was used for HTML strings in title. Prefer titleJSX. + + const handleCTAClick = () => { + openModal({ type: formType }); + }; + + // Variant configurations - using consistent brand colors with different treatments + const variantConfig = { + default: { + background: "bg-gradient-to-b from-neutral-50 to-white", + titleColor: "text-neutral-900", + subtitleColor: "text-neutral-700", + eyebrowBg: "bg-primary-600/10", + eyebrowText: "text-primary-600", + dividerColor: "bg-primary-600", + ctaButton: "bg-primary-600 hover:bg-primary-700 text-white" + }, + urgency: { + background: "bg-gradient-to-br from-primary-600 via-primary-600 to-primary-700", + titleColor: "text-white", + subtitleColor: "text-white/90", + eyebrowBg: "bg-white/20", + eyebrowText: "text-white", + dividerColor: "bg-white", + ctaButton: "bg-white text-primary-600 hover:bg-neutral-100 font-bold" + }, + business: { + background: "bg-gradient-to-br from-neutral-50 to-white border-l-4 border-primary-700", + titleColor: "text-neutral-900", + subtitleColor: "text-neutral-700", + eyebrowBg: "bg-primary-700/10", + eyebrowText: "text-primary-700", + dividerColor: "bg-primary-700", + ctaButton: "bg-primary-700 hover:bg-primary-600 text-white font-semibold" + }, + supportive: { + background: "bg-gradient-to-br from-primary-600/10 via-primary-100/50 to-white", + titleColor: "text-neutral-900", + subtitleColor: "text-neutral-700", + eyebrowBg: "bg-primary-600/20", + eyebrowText: "text-primary-700", + dividerColor: "bg-primary-600", + ctaButton: "bg-primary-600/80 hover:bg-primary-600 text-white font-medium rounded-lg" + } + }; + + const currentConfig = variantConfig[variant] || variantConfig.default; + + // Stats component for business variant + const StatsDisplay = () => ( + + {stats.map((stat, index) => ( +
    +
    + {stat.value} +
    +
    + {stat.label} +
    +
    + ))} +
    + ); + + // Urgency indicator for urgent variant + const UrgencyIndicator = () => ( + + + + + Fast Track Available + + ); + + return ( +
    + {/* Background image */} +
    + {heroImage ? ( + + ) : ( +
    + )} +
    + +
    + {splitLayout && variant === "business" ? ( + // Split layout for business variant +
    + + {eyebrowText && ( + + + {eyebrowText} + + + )} + + + {titleJSX || title} + + + + + {subtitle && ( + + {subtitle} + + )} + + {ctaText && ( + + {ctaText} + + )} + + + {/* Stats side for business variant */} + + {showStats && stats.length > 0 && } + +
    + ) : ( + // Centered layout for other variants + + {variant === "urgency" && } + + {eyebrowText && ( + + + {eyebrowText} + + + )} + + + {titleJSX || title} + + + + + {subtitle && ( + + {subtitle} + + )} + + {showStats && stats.length > 0 && variant === "business" && } + + {ctaText && ( + + {ctaText} + + )} + + )} +
    +
    + ) +} + +export default HeroVariant diff --git a/src/components/PageHero.js b/src/components/PageHero.js index 7aae346..343a5d4 100644 --- a/src/components/PageHero.js +++ b/src/components/PageHero.js @@ -24,7 +24,8 @@ const staggerChildren = { /** * PageHero - A reusable hero component for page headers - * @param {string} title - Main heading (can include HTML tags for styling) + * @param {string|React.ReactNode} title - Main heading (legacy; prefer titleJSX) + * @param {React.ReactNode} titleJSX - JSX heading content (takes precedence over title) * @param {string} subtitle - Support text below the heading * @param {string} eyebrowText - Optional label text displayed above heading * @param {Object} heroImage - Gatsby image data from graphql query @@ -33,15 +34,12 @@ const staggerChildren = { */ const PageHero = ({ title, + titleJSX = null, subtitle, eyebrowText, heroImage, className = "" }) => { - // Function to safely render HTML in the title - const createMarkup = (htmlContent) => { - return { __html: htmlContent }; - }; return (
    @@ -78,8 +76,9 @@ const PageHero = ({ + > + {titleJSX || title} + diff --git a/src/components/PropertyCard.js b/src/components/PropertyCard.js index 0a96ba2..4dfd563 100644 --- a/src/components/PropertyCard.js +++ b/src/components/PropertyCard.js @@ -11,7 +11,7 @@ import { FORM_TYPES } from '../context/modalContext' // Property Card component for displaying property listings const PropertyCard = ({ property }) => { const { openPreview } = usePropertyPreview() - const { title, location, bedrooms, bathrooms, area, description, amenities, mainImage, status, slug } = property + const { title, location, bedrooms, bathrooms, area, description, amenities, mainImage, status, slug, price } = property const imageData = mainImage?.asset?.gatsbyImageData // Format location string from location object @@ -56,7 +56,7 @@ const PropertyCard = ({ property }) => { >
    {/* Image with overlay link to full details */} - + {imageData ? ( <> { alt={title} className="h-full w-full object-cover" /> -
    -
    +
    +
    - View Details + Click here to view
    @@ -79,9 +79,11 @@ const PropertyCard = ({ property }) => {
    )} - {/*
    - £{price?.toLocaleString()} -
    */} + {typeof price === 'number' && ( +
    + £{price.toLocaleString()} +
    + )} {getStatusBadge()}
    diff --git a/src/components/PropertyFilter.js b/src/components/PropertyFilter.js index 63f2efd..c086f8a 100644 --- a/src/components/PropertyFilter.js +++ b/src/components/PropertyFilter.js @@ -179,6 +179,19 @@ const PropertyFilter = ({ filters, handleInputChange, propertyTypes, propertySta
    + +
    + +
    diff --git a/src/components/SectionHeader.js b/src/components/SectionHeader.js index 3683e81..d1fa34b 100644 --- a/src/components/SectionHeader.js +++ b/src/components/SectionHeader.js @@ -13,7 +13,8 @@ const fadeIn = { /** * SectionHeader - A reusable component for section headings - * @param {string} title - The title text (can include HTML for styling) + * @param {string|React.ReactNode} title - The title text (legacy; prefer titleJSX) + * @param {React.ReactNode} titleJSX - JSX title content (takes precedence over title) * @param {string} description - Optional description text below the title * @param {string} align - Text alignment ('center', 'left', or 'right') * @param {string} className - Additional CSS classes @@ -21,6 +22,7 @@ const fadeIn = { */ const SectionHeader = ({ title, + titleJSX = null, description, align = 'center', className = '' @@ -32,10 +34,7 @@ const SectionHeader = ({ right: 'text-right' }; - // Function to safely render HTML in the title - const createMarkup = (htmlContent) => { - return { __html: htmlContent }; - }; + // Deprecated: HTML title support; prefer JSX via titleJSX // Divider alignment classes const dividerClasses = { @@ -49,8 +48,9 @@ const SectionHeader = ({ + > + {titleJSX || title} + { + const { openModal } = useModal() + + const handleServiceClick = (serviceFormType = formType) => { + openModal({ type: serviceFormType }); + }; + + // Variant configurations - using consistent brand colors + const variantConfig = { + default: { + accentColor: "text-primary-600", + borderColor: "border-primary-600", + hoverBg: "hover:bg-primary-50", + iconBg: "bg-primary-100" + }, + supportive: { + accentColor: "text-primary-600", + borderColor: "border-primary-600", + hoverBg: "hover:bg-primary-50", + iconBg: "bg-primary-100" + } + }; + + const currentConfig = variantConfig[variant] || variantConfig.default; + + return ( +
    +
    + + {/* Section Header */} +
    + + {titleJSX || title} + + + {description && ( + + {description} + + )} +
    + + {/* Services Grid */} +
    + {services.map((service, index) => ( + handleServiceClick(service.formType)} + > + {/* Service Icon */} +
    + {service.icon && ( +
    + )} +
    + + {/* Service Content */} +

    + {service.title} +

    + +

    + {service.description} +

    + + {/* Benefits List */} + {service.benefits && service.benefits.length > 0 && ( +
      + {service.benefits.map((benefit, benefitIndex) => ( +
    • + + + + {benefit} +
    • + ))} +
    + )} + + {/* Stress Relief Indicator + {service.stressReliefLevel && ( +
    +
    + Stress Relief + {service.stressReliefLevel}% +
    +
    + +
    +
    + )} */} + + {/* Service Features Tags */} + {service.tags && service.tags.length > 0 && ( +
    + {service.tags.map((tag, tagIndex) => ( + + {tag} + + ))} +
    + )} + + {/* Service CTA */} +
    + {service.ctaText && ( + + {service.ctaText} + + )} + + + +
    + + ))} +
    + + {/* Problem/Solution Highlight */} + +
    +
    +

    + Stressed About Property Management? +

    +
      +
    • • Late night tenant calls
    • +
    • • Compliance headaches
    • +
    • • Maintenance emergencies
    • +
    • • Void periods and rent arrears
    • +
    +
    +
    +

    + We Handle Everything For You +

    +
      +
    • • 24/7 professional support
    • +
    • • Full regulatory compliance
    • +
    • • Trusted contractor network
    • +
    • • Guaranteed rent collection
    • +
    +
    +
    +
    + + {/* Overall CTA */} +
    + handleServiceClick()} + className="bg-primary-600 hover:bg-primary-700 text-white px-10 py-4 rounded-lg font-medium text-lg transition-colors shadow-lg" + > + Let Us Handle Everything + + + Free consultation • No obligation • Peace of mind guaranteed + +
    +
    +
    +
    + ) +} + +export default ServiceGrid diff --git a/src/components/ServiceTable.js b/src/components/ServiceTable.js new file mode 100644 index 0000000..5b37bc5 --- /dev/null +++ b/src/components/ServiceTable.js @@ -0,0 +1,292 @@ +import React, { useState } from 'react' +import { motion } from 'framer-motion' +import { useModal, FORM_TYPES } from '../context/modalContext' + +// Animation variants +const fadeIn = { + hidden: { opacity: 0, y: 20 }, + visible: { + opacity: 1, + y: 0, + transition: { duration: 0.6 } + } +} + +const staggerChildren = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + staggerChildren: 0.1 + } + } +} + +/** + * ServiceTable - Data-rich table layout for investor services with metrics + * @param {Array} services - Array of service objects + * @param {string} title - Section title + * @param {string} description - Section description + * @param {string} formType - Form type for CTAs + * @param {boolean} showComparison - Whether to show comparison table + */ +const ServiceTable = ({ + services = [], + title = "Investment Services", + description = "", + formType = FORM_TYPES.BROKER_REFERRAL, + showComparison = true +}) => { + const { openModal } = useModal() + const [selectedService, setSelectedService] = useState(null) + + const handleServiceClick = (serviceFormType = formType) => { + openModal({ type: serviceFormType }); + }; + + const handleServiceSelect = (serviceIndex) => { + setSelectedService(selectedService === serviceIndex ? null : serviceIndex); + }; + + return ( +
    +
    + + {/* Section Header */} +
    + + + {description && ( + + {description} + + )} +
    + + {/* Services Comparison Table */} + {showComparison && services.length > 0 && ( + +
    + + + + + + + + + + + + + {services.map((service, index) => ( + handleServiceSelect(index)} + role="button" + aria-label={`Select ${service.title} service for more details`} + tabIndex={0} + onKeyDown={(e) => { + if (e.key === 'Enter' || e.key === ' ') { + handleServiceSelect(index); + } + }} + > + + + + + + + + ))} + +
    Service TypeLTV RatioTypical RateMax TermSpeedAction
    +
    +
    + {service.icon && ( +
    + )} +
    +
    +
    {service.title}
    +
    {service.subtitle}
    +
    +
    +
    + {service.ltvRatio} + + {service.typicalRate} + + {service.maxTerm} + + + {service.speed} + + + +
    +
    +
    + )} + + {/* Detailed Service Cards */} +
    + {services.map((service, index) => ( + + {/* Service Header */} +
    +
    +
    + {service.icon && ( +
    + )} +
    +
    +

    {service.title}

    +

    {service.subtitle}

    +
    +
    + {service.featured && ( + + Popular + + )} +
    + + {/* Service Description */} +

    + {service.description} +

    + + {/* Key Metrics */} +
    +
    +
    {service.ltvRatio}
    +
    Max LTV
    +
    +
    +
    {service.typicalRate}
    +
    From
    +
    +
    + + {/* Features */} + {service.features && service.features.length > 0 && ( +
      + {service.features.map((feature, featureIndex) => ( +
    • + + + + {feature} +
    • + ))} +
    + )} + + {/* ROI Calculator placeholder */} + {service.showCalculator && ( +
    +
    + Quick ROI Calculator + + + +
    +

    + Calculate potential returns with this finance option +

    +
    + )} + + {/* CTA Button */} + + + ))} +
    + + {/* Market Insights Section */} + +
    +
    +
    £2.4M
    +
    Average Weekly Lending
    +
    +
    +
    48hrs
    +
    Average Decision Time
    +
    +
    +
    95%
    +
    Client Satisfaction
    +
    +
    +
    + + {/* Overall CTA */} +
    + handleServiceClick()} + className="bg-blue-600 hover:bg-blue-700 text-white px-10 py-4 rounded-full font-bold text-lg transition-colors shadow-lg" + > + Speak to Investment Specialist + + + Free consultation • Competitive rates • Expert advice + +
    +
    +
    +
    + ) +} + +export default ServiceTable diff --git a/src/components/ServiceTimeline.js b/src/components/ServiceTimeline.js new file mode 100644 index 0000000..49c0672 --- /dev/null +++ b/src/components/ServiceTimeline.js @@ -0,0 +1,174 @@ +import React from 'react' +import { motion } from 'framer-motion' +import { useModal, FORM_TYPES } from '../context/modalContext' + +// Animation variants +const fadeIn = { + hidden: { opacity: 0, y: 20 }, + visible: { + opacity: 1, + y: 0, + transition: { duration: 0.6 } + } +} + +const staggerChildren = { + hidden: { opacity: 0 }, + visible: { + opacity: 1, + transition: { + staggerChildren: 0.2 + } + } +} + +/** + * ServiceTimeline - Timeline layout for homeowner services + * @param {Array} services - Array of service objects + * @param {string|React.ReactNode} title - Section title (legacy; prefer titleJSX) + * @param {React.ReactNode} titleJSX - JSX title content (takes precedence over title) + * @param {string} description - Section description + * @param {string} formType - Form type for CTAs + */ +const ServiceTimeline = ({ + services = [], + title = "Our Services", + titleJSX = null, + description = "", + formType = FORM_TYPES.PROPERTY_SELLER +}) => { + const { openModal } = useModal() + + const handleServiceClick = (serviceFormType = formType) => { + openModal({ type: serviceFormType }); + }; + + return ( +
    +
    + + {/* Section Header */} +
    + + {titleJSX || title} + + + {description && ( + + {description} + + )} +
    + + {/* Timeline */} +
    + {/* Timeline line */} +
    + + {services.map((service, index) => ( + + {/* Timeline dot */} +
    + + {/* Content */} +
    +
    + {/* Service icon */} +
    + {service.icon && ( +
    + )} +
    + + {/* Service content */} +

    + {service.title} +

    + +

    + {service.description} +

    + + {/* Service features */} + {service.features && service.features.length > 0 && ( +
      + {service.features.map((feature, featureIndex) => ( +
    • + + + + {feature} +
    • + ))} +
    + )} + + {/* Timeline step number */} +
    + Step {index + 1} +
    + + {/* Service CTA */} + {service.ctaText && ( + + )} +
    +
    + + {/* Spacer for even layout on desktop */} +
    + + ))} +
    + + {/* Overall CTA */} +
    + handleServiceClick()} + className="bg-primary-600 hover:bg-primary-700 text-white px-10 py-4 rounded-full font-bold text-lg transition-colors shadow-lg" + > + Get Started Today + +
    +
    +
    +
    + ) +} + +export default ServiceTimeline diff --git a/src/components/drawer.js b/src/components/drawer.js index d6aaec8..bafdbc7 100755 --- a/src/components/drawer.js +++ b/src/components/drawer.js @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import { Link } from "gatsby"; import { useDrawer } from "../context/drawerContext"; import Logo from "../images/logos/logo.svg"; @@ -6,6 +6,11 @@ import { motion, AnimatePresence } from "framer-motion"; const Drawer = ({ menu }) => { const { toggleDrawer } = useDrawer(); + const [expandedItem, setExpandedItem] = useState(null); + + const handleItemToggle = (itemName) => { + setExpandedItem(expandedItem === itemName ? null : itemName); + }; return ( @@ -72,14 +77,64 @@ const Drawer = ({ menu }) => { animate={{ opacity: 1, x: 0 }} transition={{ delay: 0.1 * index, duration: 0.3 }} > - - {item.name} - + {item.hasDropdown ? ( +
    + + + + {expandedItem === item.name && ( + + {item.dropdownItems.map((dropdownItem, dropdownIndex) => ( + +
    {dropdownItem.name}
    + {dropdownItem.description && ( +
    + {dropdownItem.description} +
    + )} + + ))} +
    + )} +
    +
    + ) : ( + + {item.name} + + )} ))} diff --git a/src/components/footer.js b/src/components/footer.js index e97f3b4..62249ed 100755 --- a/src/components/footer.js +++ b/src/components/footer.js @@ -2,7 +2,6 @@ import React from 'react' import { useStaticQuery, graphql } from 'gatsby' import { motion } from 'framer-motion' import { useModal, FORM_TYPES } from '../context/modalContext' -import CTABanner from './CTABanner' import navItems from '../data/navItems.json' // Animation variants @@ -50,7 +49,7 @@ const Footer = () => { const { toggleModal } = useModal() return ( <> -
    + {/*
    { formType={FORM_TYPES.PROPERTY_SELLER} />
    -
    +
    */}