From aa443f2d6a380c30cfe5e39ea7202e8b1e6133ab Mon Sep 17 00:00:00 2001 From: majakomel Date: Wed, 10 Apr 2024 10:18:39 +0200 Subject: [PATCH 1/2] Use getStaticProps on countries page --- pages/countries.js | 52 ++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/pages/countries.js b/pages/countries.js index bd02f78a..1cfb32d6 100644 --- a/pages/countries.js +++ b/pages/countries.js @@ -3,7 +3,7 @@ import debounce from 'lodash.debounce' import Head from 'next/head' import { Box, - Container, Flex, Heading, Input, Link, Text + Container, Flex, Heading, Input, Text } from 'ooni-components' import React, { useMemo, useState } from 'react' import { FormattedMessage, useIntl } from 'react-intl' @@ -14,23 +14,6 @@ import { StyledStickySubMenu } from 'components/SharedStyledComponents' import countryUtil from 'country-util' import { getLocalisedRegionName } from 'utils/i18nCountries' -const CountryLink = styled(Link)` - color: ${props => props.theme.colors.black}; - text-decoration: none; - &:hover { - color: ${props => props.theme.colors.blue5}; - } -` - -const StyledCountryCard = styled(Box)` - border: 1px solid ${props => props.theme.colors.gray3}; -` - -const Divider = styled.div` - border: 1px solid ${props => props.theme.colors.gray3}; - margin-bottom: 12px; -` - // To compenstate for the sticky navigation bar // :target selector applies only the element with id that matches // the current URL fragment (e.g '/#Africa') @@ -56,14 +39,20 @@ const RegionHeaderAnchor = styled.div` const RegionBlock = ({regionCode, countries}) => { const intl = useIntl() - countries = countries - .map((c) => ({...c, localisedName: getLocalisedRegionName(c.alpha_2, intl.locale)})) - .sort((a, b) => (new Intl.Collator(intl.locale).compare(a.localisedName, b.localisedName))) + const sortedCountries = useMemo(() => (countries + .map((c) => ({...c, localisedName: getLocalisedRegionName(c.alpha_2, intl.locale)})) + .sort((a, b) => (new Intl.Collator(intl.locale).compare(a.localisedName, b.localisedName))) + ), + [intl, countries] + ) - const regionName = getLocalisedRegionName(regionCode, intl.locale) + const regionName = useMemo(() => (getLocalisedRegionName(regionCode, intl.locale)), [regionCode, intl]) // Select countries in the region where we have measuremennts from - const measuredCountriesInRegion = countryUtil.regions[regionCode].countries.filter((countryCode) => ( - countries.find((item) => item.alpha_2 === countryCode) + const measuredCountriesInRegion = useMemo(() => ( + countryUtil.regions[regionCode].countries.filter((countryCode) => ( + sortedCountries.find((item) => item.alpha_2 === countryCode) + ), + [sortedCountries]) )) // When there are no measurements from the region @@ -116,16 +105,15 @@ const NoCountriesFound = ({ searchTerm }) => ( ) -export const getServerSideProps = async () => { +export const getStaticProps = async () => { const client = axios.create({baseURL: process.env.NEXT_PUBLIC_OONI_API}) // eslint-disable-line - const result = await client.get('/api/_/countries') - const responseUrl = result?.request?.res?.responseUrl + const result = await client.get('/api/_/countries') - return { - props: { - countries: result.data.countries, - } - } + return { + props: { + countries: result.data.countries, + } + } } const Countries = ({countries}) => { From e389d8748ce47365584ef907f5c3e9ebc9fee458 Mon Sep 17 00:00:00 2001 From: majakomel Date: Thu, 11 Apr 2024 13:01:01 +0200 Subject: [PATCH 2/2] Refactory country page --- components/CountryBox.js | 15 +- package.json | 4 +- pages/as/[probe_asn].js | 15 +- pages/countries.js | 65 ++++---- yarn.lock | 340 +++++++++++++++++++-------------------- 5 files changed, 226 insertions(+), 213 deletions(-) diff --git a/components/CountryBox.js b/components/CountryBox.js index 656d064d..d4f16faf 100644 --- a/components/CountryBox.js +++ b/components/CountryBox.js @@ -1,11 +1,8 @@ -import { Box, Flex, Text } from 'ooni-components' -import { useIntl } from 'react-intl' -import { getLocalisedRegionName } from 'utils/i18nCountries' import Flag from 'components/Flag' import { GridBox } from 'components/VirtualizedGrid' +import { Box, Flex, Text } from 'ooni-components' const CountryList = ({ countries, itemsPerRow = 6, gridGap = 3 }) => { - const intl = useIntl() const gridTemplateColumns = ['1fr 1fr', '1fr 1fr', '1fr 1fr 1fr 1fr', [...Array(itemsPerRow)].map((i) => ('1fr')).join(' ')] return ( @@ -16,15 +13,15 @@ const CountryList = ({ countries, itemsPerRow = 6, gridGap = 3 }) => { }}> {countries.map((c) => ( - - {getLocalisedRegionName(c.country, intl.locale)} + + {c.localisedName} } - count={c.measurements} + count={c.count} /> )) } diff --git a/package.json b/package.json index 6b42a582..dae49d81 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@nivo/heatmap": "^0.80.0", "@nivo/line": "^0.80.0", "@nivo/tooltip": "0.80.0", - "@sentry/nextjs": "^7.104.0", + "@sentry/nextjs": "^7.109.0", "@tanstack/react-table": "^8.11.6", "axios": "^1.6.7", "buffer-from": "^1.1.2", @@ -28,7 +28,7 @@ "lodash.debounce": "^4.0.8", "lru-cache": "^10.1.0", "markdown-to-jsx": "^7.4.0", - "next": "^14.1.3", + "next": "^14.1.4", "nprogress": "^0.2.0", "ooni-components": "^0.6.0-alpha.5", "pretty-ms": "^8.0.0", diff --git a/pages/as/[probe_asn].js b/pages/as/[probe_asn].js index e4aa4d43..2a9637e4 100644 --- a/pages/as/[probe_asn].js +++ b/pages/as/[probe_asn].js @@ -19,6 +19,7 @@ import dayjs from 'services/dayjs' import { fetcherWithPreprocessing, simpleFetcher } from 'services/fetchers' import styled from 'styled-components' import useSWR from 'swr' +import { getLocalisedRegionName } from 'utils/i18nCountries' import { toCompactNumberUnit } from '../../utils' import TestGroupBadge from '/components/Badge' @@ -44,7 +45,6 @@ const messagingTestNames = ['signal', 'telegram', 'whatsapp', 'facebook_messenge const circumventionTestNames = ['psiphon', 'tor', 'torsf'] const ChartsContainer = () => { - const intl = useIntl() const router = useRouter() const { query: { since, until, probe_asn, probe_cc }, @@ -182,7 +182,14 @@ const Summary = ({ measurementsTotal, firstMeasurement, lastMeasurement }) => { } const CountriesList = ({ countriesData }) => { - const sortedCountries = countriesData.sort((a, b) => b.measurements - a.measurements) + const { locale } = useIntl() + + const sortedCountries = useMemo(() => ( + countriesData + .sort((a, b) => b.measurements - a.measurements) + .map((c) => ({...c, localisedName: getLocalisedRegionName(c.alpha_2, locale)})) + )) + const numberOfCountries = countriesData.length return ( @@ -327,8 +334,8 @@ export const getServerSideProps = async (context) => { }) .then((response) => response.data.result.map((res) => ({ - country: res.probe_cc, - measurements: res.measurement_count, + alpha_2: res.probe_cc, + count: res.measurement_count, })) ) diff --git a/pages/countries.js b/pages/countries.js index 1cfb32d6..b3ea1475 100644 --- a/pages/countries.js +++ b/pages/countries.js @@ -36,27 +36,31 @@ const RegionHeaderAnchor = styled.div` } ` -const RegionBlock = ({regionCode, countries}) => { - const intl = useIntl() - - const sortedCountries = useMemo(() => (countries - .map((c) => ({...c, localisedName: getLocalisedRegionName(c.alpha_2, intl.locale)})) - .sort((a, b) => (new Intl.Collator(intl.locale).compare(a.localisedName, b.localisedName))) - ), - [intl, countries] +const Regions = ({ regions, countries}) => { + return ( + regions.map((regionCode, index) => { + + const measuredCountriesInRegion = countryUtil.regions[regionCode].countries.filter((countryCode) => ( + countries.find((item) => item.alpha_2 === countryCode) + )) + + return ( + ( measuredCountriesInRegion.indexOf(c.alpha_2) > -1 )))} + /> + ) + }) ) +} +const RegionBlock = ({regionCode, countries}) => { + const intl = useIntl() const regionName = useMemo(() => (getLocalisedRegionName(regionCode, intl.locale)), [regionCode, intl]) - // Select countries in the region where we have measuremennts from - const measuredCountriesInRegion = useMemo(() => ( - countryUtil.regions[regionCode].countries.filter((countryCode) => ( - sortedCountries.find((item) => item.alpha_2 === countryCode) - ), - [sortedCountries]) - )) - + // When there are no measurements from the region - if (measuredCountriesInRegion.length === 0) { + if (countries.length === 0) { return null } @@ -65,7 +69,7 @@ const RegionBlock = ({regionCode, countries}) => { {regionName} ( measuredCountriesInRegion.indexOf(c.alpha_2) > -1 ))).map((c) => ({country: c.alpha_2, measurements: c.count}))} + countries={countries} itemsPerRow={4} /> @@ -116,17 +120,24 @@ export const getStaticProps = async () => { } } -const Countries = ({countries}) => { +const Countries = ({ countries }) => { const intl = useIntl() const [searchInput, setSearchInput] = useState('') - let filteredCountries = countries + const sortedCountries = useMemo(() => (countries + .map((c) => ({...c, localisedName: getLocalisedRegionName(c.alpha_2, intl.locale)})) + .sort((a, b) => (new Intl.Collator(intl.locale).compare(a.localisedName, b.localisedName))) + ), + [intl, countries] + ) - if (searchInput !== '') { - filteredCountries = countries.filter((country) => ( - country.name.toLowerCase().indexOf(searchInput.toLowerCase()) > -1 - )) - } + const filteredCountries = useMemo(() => ( + searchInput !== '' ? + sortedCountries.filter((country) => ( + country.name.toLowerCase().indexOf(searchInput.toLowerCase()) > -1 + )) : + sortedCountries + ), [searchInput]) const searchHandler = (searchTerm) => { setSearchInput(searchTerm) @@ -176,9 +187,7 @@ const Countries = ({countries}) => { // Show a message when there are no countries to show, when search is empty (filteredCountries.length === 0) ? - : regions.map((regionCode, index) => ( - - )) + : } diff --git a/yarn.lock b/yarn.lock index 3d45c3eb..4d1b72ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1437,10 +1437,10 @@ outvariant "^1.2.1" strict-event-emitter "^0.5.1" -"@next/env@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.3.tgz#73007b64d487bbb95ed83145195f734fc1182d10" - integrity sha512-VhgXTvrgeBRxNPjyfBsDIMvgsKDxjlpw4IAUsHCX8Gjl1vtHUYRT3+xfQ/wwvLPDd/6kqfLqk9Pt4+7gysuCKQ== +"@next/env@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.4.tgz#432e80651733fbd67230bf262aee28be65252674" + integrity sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ== "@next/eslint-plugin-next@14.0.4": version "14.0.4" @@ -1449,50 +1449,50 @@ dependencies: glob "7.1.7" -"@next/swc-darwin-arm64@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.3.tgz#b4c218fdb49275972d91e9a9a0ccadba243b6739" - integrity sha512-LALu0yIBPRiG9ANrD5ncB3pjpO0Gli9ZLhxdOu6ZUNf3x1r3ea1rd9Q+4xxUkGrUXLqKVK9/lDkpYIJaCJ6AHQ== - -"@next/swc-darwin-x64@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.3.tgz#aa0d4357179d68daaa6f400708b76666708ffec9" - integrity sha512-E/9WQeXxkqw2dfcn5UcjApFgUq73jqNKaE5bysDm58hEUdUGedVrnRhblhJM7HbCZNhtVl0j+6TXsK0PuzXTCg== - -"@next/swc-linux-arm64-gnu@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.3.tgz#1ba8df39c04368ede185f268c3a817a8f4290e4c" - integrity sha512-USArX9B+3rZSXYLFvgy0NVWQgqh6LHWDmMt38O4lmiJNQcwazeI6xRvSsliDLKt+78KChVacNiwvOMbl6g6BBw== - -"@next/swc-linux-arm64-musl@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.3.tgz#2fa8fe435862eb186aca6d6068c8aef2126ab11e" - integrity sha512-esk1RkRBLSIEp1qaQXv1+s6ZdYzuVCnDAZySpa62iFTMGTisCyNQmqyCTL9P+cLJ4N9FKCI3ojtSfsyPHJDQNw== - -"@next/swc-linux-x64-gnu@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.3.tgz#57a687b44337af219e07a79ecc8c63a3c1b2d020" - integrity sha512-8uOgRlYEYiKo0L8YGeS+3TudHVDWDjPVDUcST+z+dUzgBbTEwSSIaSgF/vkcC1T/iwl4QX9iuUyUdQEl0Kxalg== - -"@next/swc-linux-x64-musl@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.3.tgz#8c057f8f7fb9679915df25eda6ab0ea1b7af85ff" - integrity sha512-DX2zqz05ziElLoxskgHasaJBREC5Y9TJcbR2LYqu4r7naff25B4iXkfXWfcp69uD75/0URmmoSgT8JclJtrBoQ== - -"@next/swc-win32-arm64-msvc@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.3.tgz#5367333e701f722009592013502aa8e735bee782" - integrity sha512-HjssFsCdsD4GHstXSQxsi2l70F/5FsRTRQp8xNgmQs15SxUfUJRvSI9qKny/jLkY3gLgiCR3+6A7wzzK0DBlfA== - -"@next/swc-win32-ia32-msvc@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.3.tgz#dc455021fee85e037f6fb4134e85895dce5a0495" - integrity sha512-DRuxD5axfDM1/Ue4VahwSxl1O5rn61hX8/sF0HY8y0iCbpqdxw3rB3QasdHn/LJ6Wb2y5DoWzXcz3L1Cr+Thrw== - -"@next/swc-win32-x64-msvc@14.1.3": - version "14.1.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.3.tgz#4a8d4384901f0c48ece9dbb60cb9aea107d39e7c" - integrity sha512-uC2DaDoWH7h1P/aJ4Fok3Xiw6P0Lo4ez7NbowW2VGNXw/Xv6tOuLUcxhBYZxsSUJtpeknCi8/fvnSpyCFp4Rcg== +"@next/swc-darwin-arm64@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.4.tgz#a3bca0dc4393ac4cf3169bbf24df63441de66bb7" + integrity sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg== + +"@next/swc-darwin-x64@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.4.tgz#ba3683d4e2d30099f3f2864dd7349a4d9f440140" + integrity sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ== + +"@next/swc-linux-arm64-gnu@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.4.tgz#3519969293f16379954b7e196deb0c1eecbb2f8b" + integrity sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA== + +"@next/swc-linux-arm64-musl@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.4.tgz#4bb3196bd402b3f84cf5373ff1021f547264d62f" + integrity sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g== + +"@next/swc-linux-x64-gnu@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.4.tgz#1b3372c98c83dcdab946cdb4ee06e068b8139ba3" + integrity sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw== + +"@next/swc-linux-x64-musl@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.4.tgz#8459088bdc872648ff78f121db596f2533df5808" + integrity sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg== + +"@next/swc-win32-arm64-msvc@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.4.tgz#84280a08c00cc3be24ddd3a12f4617b108e6dea6" + integrity sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag== + +"@next/swc-win32-ia32-msvc@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.4.tgz#23ff7f4bd0a27177428669ef6fa5c3923c738031" + integrity sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw== + +"@next/swc-win32-x64-msvc@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.4.tgz#bccf5beccfde66d6c66fa4e2509118c796385eda" + integrity sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w== "@nivo/annotations@0.80.0": version "0.80.0" @@ -1765,46 +1765,46 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.0.tgz#b5bc1e081428794f6a4d239707b359404be35ce2" integrity sha512-Jh4t/593gxs0lJZ/z3NnasKlplXT2f+4y/LZYuaKZW5KAaiVFL/fThhs+17EbUd53jUVJ0QudYCBGbN/psvaqg== -"@sentry-internal/feedback@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.104.0.tgz#a2abcfcba3ecd2e6798078bc54841c0146e72b85" - integrity sha512-+OWqm+X9ZfEQQmxVoZsc9lpzd85pabAT+bEj57StRMTnfdRbD9TippS20nCD9N2Ql5v2/41NfiPONMejGbnOwg== - dependencies: - "@sentry/core" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" - -"@sentry-internal/replay-canvas@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.104.0.tgz#08fa83c150a1e512f138013fc293bf63955ac1a1" - integrity sha512-gfdnkFIpxAveKNghkvRCqv+hSiBkxYVoyFZLTvUPuM9Cmvmket1/PpnuWMC2jNtCEewG3gxkPDd4EaT9oa1HZQ== - dependencies: - "@sentry/core" "7.104.0" - "@sentry/replay" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" - -"@sentry-internal/tracing@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.104.0.tgz#f5ec0194b7954a92c8e53247bb9b7183bec79abf" - integrity sha512-2z7OijM1J5ndJUiJJElC3iH9qb/Eb8eYm2v8oJhM8WVdc5uCKfrQuYHNgGOnmY2FOCfEUlTmMQGpDw7DJ67L5w== - dependencies: - "@sentry/core" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" - -"@sentry/browser@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.104.0.tgz#8d67bd90645099ad9ed4620df166cfbe6dd53e91" - integrity sha512-HsqO+mr1SowGoP0VbuWrQ2DZT0t5PLomy7LEYa6+4lbOemnY+5YV2NSwBTKbjYysvKipSwaRtPhXrsXsMaz8Bg== - dependencies: - "@sentry-internal/feedback" "7.104.0" - "@sentry-internal/replay-canvas" "7.104.0" - "@sentry-internal/tracing" "7.104.0" - "@sentry/core" "7.104.0" - "@sentry/replay" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" +"@sentry-internal/feedback@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.109.0.tgz#4657d7f36a1de3be466f42735d295e212b7eca11" + integrity sha512-EL7N++poxvJP9rYvh6vSu24tsKkOveNCcCj4IM7+irWPjsuD2GLYYlhp/A/Mtt9l7iqO4plvtiQU5HGk7smcTQ== + dependencies: + "@sentry/core" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" + +"@sentry-internal/replay-canvas@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.109.0.tgz#9a00857994a9487428296feed4a9ddf2d62bab84" + integrity sha512-Lh/K60kmloR6lkPUcQP0iamw7B/MdEUEx/ImAx4tUSMrLj+IoUEcq/ECgnnVyQkJq59+8nPEKrVLt7x6PUPEjw== + dependencies: + "@sentry/core" "7.109.0" + "@sentry/replay" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" + +"@sentry-internal/tracing@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.109.0.tgz#3effaa132c41a65378fa98146aea61228d528953" + integrity sha512-PzK/joC5tCuh2R/PRh+7dp+uuZl7pTsBIjPhVZHMTtb9+ls65WkdZJ1/uKXPouyz8NOo9Xok7aEvEo9seongyw== + dependencies: + "@sentry/core" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" + +"@sentry/browser@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.109.0.tgz#13b2623f43047f292cf7d6070128a7501e008693" + integrity sha512-yx+OFG+Ab9qUDDgV9ZDv8M9O9Mqr0fjKta/LMlWALYLjzkMvxsPlRPFj7oMBlHqOTVLDeg7lFYmsA8wyWQ8Z8g== + dependencies: + "@sentry-internal/feedback" "7.109.0" + "@sentry-internal/replay-canvas" "7.109.0" + "@sentry-internal/tracing" "7.109.0" + "@sentry/core" "7.109.0" + "@sentry/replay" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" "@sentry/cli@^1.77.1": version "1.77.3" @@ -1818,95 +1818,95 @@ proxy-from-env "^1.1.0" which "^2.0.2" -"@sentry/core@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.104.0.tgz#2c6ce6eb6a84b8015bffb25e906407ec1d81a224" - integrity sha512-XPndD6IGQGd07/EntvYVzOWQUo/Gd7L3DwYFeEKeBv6ByWjbBNmVZFRhU0GPPsCHKyW9yMU9OO9diLSS4ijsRg== +"@sentry/core@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.109.0.tgz#7a02f4af4a676950f6555f552a2a232d4458fcd5" + integrity sha512-xwD4U0IlvvlE/x/g/W1I8b4Cfb16SsCMmiEuBf6XxvAa3OfWBxKoqLifb3GyrbxMC4LbIIZCN/SvLlnGJPgszA== dependencies: - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" -"@sentry/integrations@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.104.0.tgz#70856e1332ec04e2e865f4e4fcc167dbdc42538d" - integrity sha512-heZGds3bz2ZscH8s1a2bDsEYDyA7VXvV2dJeonG2QZAki2PvtaJqSfyTeVp/BlrpOxrI56BOVcZdu9yCFGC3eQ== +"@sentry/integrations@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.109.0.tgz#36f8233f55e6b0d4bdb7e7466714575a1d65f3cf" + integrity sha512-8GwPFlUu4rB1Dx3e9tc3gCMmzC5Bd5lzThhg3tMBmzCCEp7UeA4u7eUuKJ5g49vjdznPDRG2p3PcRsApFZNPSg== dependencies: - "@sentry/core" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" + "@sentry/core" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" localforage "^1.8.1" -"@sentry/nextjs@^7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.104.0.tgz#299dcf80b0aab21a9ba430ea28212fdfb2f7a0fe" - integrity sha512-Nr0aa/ZO3rUA6d+TVwHtxgm2FZSQVgkaaQ85jBaJhkF/q36L++kUdE/8laD4DvLuf+U+cbXc7PnbIH6pT+EZlw== +"@sentry/nextjs@^7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.109.0.tgz#f29c62e5a7581ee20f9add73b1de7c2cd3667b3b" + integrity sha512-AT0jhMDj7N57z8+XfgEyTJBogpU64z4mQpfOsSF5uuequzo3IlVVoJcu88jdqUkaVFxBJp3aF2T4nz65OHLoeA== dependencies: "@rollup/plugin-commonjs" "24.0.0" - "@sentry/core" "7.104.0" - "@sentry/integrations" "7.104.0" - "@sentry/node" "7.104.0" - "@sentry/react" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" - "@sentry/vercel-edge" "7.104.0" + "@sentry/core" "7.109.0" + "@sentry/integrations" "7.109.0" + "@sentry/node" "7.109.0" + "@sentry/react" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" + "@sentry/vercel-edge" "7.109.0" "@sentry/webpack-plugin" "1.21.0" chalk "3.0.0" resolve "1.22.8" rollup "2.78.0" stacktrace-parser "^0.1.10" -"@sentry/node@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.104.0.tgz#32a08349b5e94de7ff9d3fb0f12ab42317a26bed" - integrity sha512-Ixt8qg6IV8gywi4+H1cAtQeglAAww2nwLHybCxAvnu3czdF8w7ifF+o5BY1FmO5UYVCAfr8vEb+XG4CuRrFb7g== - dependencies: - "@sentry-internal/tracing" "7.104.0" - "@sentry/core" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" - -"@sentry/react@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.104.0.tgz#cb5370eb0bb2b65b1a4665fe11d9e160a66f648d" - integrity sha512-JdPzX/rJ4sSr/pVFOKwVrUhr8McCn38w5Q+/wdCabO8fdUkoBe4P05LRCH4Rng0uOk8MeEQ+EvfMVB79DmxIgQ== - dependencies: - "@sentry/browser" "7.104.0" - "@sentry/core" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" +"@sentry/node@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.109.0.tgz#dbf152212e42a9b1648ff758ec5bffcb6bb0fa49" + integrity sha512-tqMNAES4X/iBl1eZRCmc29p//0id01FBLEiesNo5nk6ECl6/SaGMFAEwu1gsn90h/Bjgr04slwFOS4cR45V2PQ== + dependencies: + "@sentry-internal/tracing" "7.109.0" + "@sentry/core" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" + +"@sentry/react@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.109.0.tgz#ae8a2950d2022e83f1bccd8b994f0096f3dd1682" + integrity sha512-KqXoDh6LVhNO+FLdM5LiTGpuorFvjoBPQ4nPGIVbjeMY/KZIau3kFxR142EvCApxmD69yvS5EhMnEqlNdaQPGw== + dependencies: + "@sentry/browser" "7.109.0" + "@sentry/core" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" hoist-non-react-statics "^3.3.2" -"@sentry/replay@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.104.0.tgz#de570a5a8cc59671b0e56944d6978809d896f07f" - integrity sha512-HmWBr/u+SNeULxCxM8lJb2iqhjizeLGJtuKSShPEguEXIUT4kzdoqLh6wn7BAjiKzhmyjrnBcosR5LUqJtGYZQ== +"@sentry/replay@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.109.0.tgz#f50fb0140c81fce660c44cc93c35988898b8348b" + integrity sha512-hCDjbTNO7ErW/XsaBXlyHFsUhneyBUdTec1Swf98TFEfVqNsTs6q338aUcaR8dGRLbLrJ9YU9D1qKq++v5h2CA== dependencies: - "@sentry-internal/tracing" "7.104.0" - "@sentry/core" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" + "@sentry-internal/tracing" "7.109.0" + "@sentry/core" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" -"@sentry/types@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.104.0.tgz#f4458ede188b422827de71e605e7c1faf940103e" - integrity sha512-5bs0xe0+GZR4QBm9Nrqw59o0sv3kBtCosrZDVxBru/dQbrfnB+/kVorvuM0rV3+coNITTKcKDegSZmK1d2uOGQ== +"@sentry/types@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.109.0.tgz#d8778358114ed05be734661cc9e1e261f4494947" + integrity sha512-egCBnDv3YpVFoNzRLdP0soVrxVLCQ+rovREKJ1sw3rA2/MFH9WJ+DZZexsX89yeAFzy1IFsCp7/dEqudusml6g== -"@sentry/utils@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.104.0.tgz#2dec1a3cf2c0bc17e1c14cffab056d5bff15f197" - integrity sha512-ZVg+xZirI9DlOi0NegNVocswdh/8p6QkzlQzDQY2LP2CC6JQdmwi64o0S4rPH4YIHNKQJTpIjduoxeKgd1EO5g== +"@sentry/utils@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.109.0.tgz#7078e1400197abc1b0c436679bef980639500a86" + integrity sha512-3RjxMOLMBwZ5VSiH84+o/3NY2An4Zldjz0EbfEQNRY9yffRiCPJSQiCJID8EoylCFOh/PAhPimBhqbtWJxX6iw== dependencies: - "@sentry/types" "7.104.0" + "@sentry/types" "7.109.0" -"@sentry/vercel-edge@7.104.0": - version "7.104.0" - resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-7.104.0.tgz#eea4301f1752a91992af26b34d506542a8d9f053" - integrity sha512-Yo2MK0dCVCT94+1z5qW6NujHkW1OAWGha4o/IoW12aNlQd75ng6ULygiWrb+eZFfmYZRLCgOLGkznYHxjqh/xg== +"@sentry/vercel-edge@7.109.0": + version "7.109.0" + resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-7.109.0.tgz#4e3e1fd5b05be3a59ddc6d6b40407dd929f75b3d" + integrity sha512-0I+pLZPkD0vSlSLwBx9XAs17WXHimGhHIMki/YH5Y007i1iykkMItoDx//Y3PPjZiJu+deO7l4wKO2J1lJW6jg== dependencies: - "@sentry-internal/tracing" "7.104.0" - "@sentry/core" "7.104.0" - "@sentry/types" "7.104.0" - "@sentry/utils" "7.104.0" + "@sentry-internal/tracing" "7.109.0" + "@sentry/core" "7.109.0" + "@sentry/types" "7.109.0" + "@sentry/utils" "7.109.0" "@sentry/webpack-plugin@1.21.0": version "1.21.0" @@ -5519,12 +5519,12 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@^14.1.3: - version "14.1.3" - resolved "https://registry.yarnpkg.com/next/-/next-14.1.3.tgz#465bb21a1a6e703e776ca53ea71d05642867fdb5" - integrity sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g== +next@^14.1.4: + version "14.1.4" + resolved "https://registry.yarnpkg.com/next/-/next-14.1.4.tgz#203310f7310578563fd5c961f0db4729ce7a502d" + integrity sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ== dependencies: - "@next/env" "14.1.3" + "@next/env" "14.1.4" "@swc/helpers" "0.5.2" busboy "1.6.0" caniuse-lite "^1.0.30001579" @@ -5532,15 +5532,15 @@ next@^14.1.3: postcss "8.4.31" styled-jsx "5.1.1" optionalDependencies: - "@next/swc-darwin-arm64" "14.1.3" - "@next/swc-darwin-x64" "14.1.3" - "@next/swc-linux-arm64-gnu" "14.1.3" - "@next/swc-linux-arm64-musl" "14.1.3" - "@next/swc-linux-x64-gnu" "14.1.3" - "@next/swc-linux-x64-musl" "14.1.3" - "@next/swc-win32-arm64-msvc" "14.1.3" - "@next/swc-win32-ia32-msvc" "14.1.3" - "@next/swc-win32-x64-msvc" "14.1.3" + "@next/swc-darwin-arm64" "14.1.4" + "@next/swc-darwin-x64" "14.1.4" + "@next/swc-linux-arm64-gnu" "14.1.4" + "@next/swc-linux-arm64-musl" "14.1.4" + "@next/swc-linux-x64-gnu" "14.1.4" + "@next/swc-linux-x64-musl" "14.1.4" + "@next/swc-win32-arm64-msvc" "14.1.4" + "@next/swc-win32-ia32-msvc" "14.1.4" + "@next/swc-win32-x64-msvc" "14.1.4" no-case@^3.0.4: version "3.0.4"