diff --git a/.gitignore b/.gitignore index 7e1e63ad..69c9a26e 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,6 @@ next-env.d.ts /playwright-report/ /blob-report/ /playwright/.cache/ + +# Sentry Config File +.sentryclirc diff --git a/README.md b/README.md index 1d112efc..7239305a 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ - [ ] Labels page - [ ] content & styling - [ ] View content by tag/genre -- [ ] Sentry +- [x] Sentry - [ ] **Virtualized list** for micro posts - [ ] copy to clipboard icons - [ ] context: tracklist diff --git a/next.config.js b/next.config.js index 1491e63f..ba7db3c4 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,8 @@ /** @type {import('next').NextConfig} */ const { withContentlayer } = require('next-contentlayer') +const { withSentryConfig } = require("@sentry/nextjs"); + const hostnames = [ 'i.scdn.co', // Spotify Album Art @@ -12,7 +14,6 @@ const hostnames = [ 'd20tmfka7s58bt.cloudfront.net', // img-omg 'spotifycdn.com', '*.spotifycdn.com' - ] module.exports = withContentlayer({ @@ -40,3 +41,49 @@ module.exports = withContentlayer({ return config; }, }) + + + + +// Injected content via Sentry wizard below +module.exports = withSentryConfig( + module.exports, + { + // For all available options, see: + // https://github.com/getsentry/sentry-webpack-plugin#options + + // Suppresses source map uploading logs during build + silent: true, + org: "goosebumps-collective", + project: "goosebumps-collective", + }, + { + // For all available options, see: + // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ + + // Upload a larger set of source maps for prettier stack traces (increases build time) + widenClientFileUpload: true, + + // Transpiles SDK to be compatible with IE11 (increases bundle size) + transpileClientSDK: true, + + // Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. + // This can increase your server load as well as your hosting bill. + // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client- + // side errors will fail. + tunnelRoute: "/monitoring", + + // Hides source maps from generated client bundles + hideSourceMaps: true, + + // Automatically tree-shake Sentry logger statements to reduce bundle size + disableLogger: true, + + // Enables automatic instrumentation of Vercel Cron Monitors. + // See the following for more information: + // https://docs.sentry.io/product/crons/ + // https://vercel.com/docs/cron-jobs + automaticVercelMonitors: true, + } +); + diff --git a/package.json b/package.json index 6e5b8e75..e4fe094e 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "@radix-ui/colors": "^3.0.0", "@radix-ui/react-scroll-area": "^1.0.2", "@radix-ui/react-tabs": "^1.0.4", + "@sentry/nextjs": "^7.105.0", "@vercel/og": "^0.6.2", "clsx": "^2.1.0", "contentlayer": "^0.3.2", diff --git a/sentry.client.config.ts b/sentry.client.config.ts new file mode 100644 index 00000000..5ad4ca00 --- /dev/null +++ b/sentry.client.config.ts @@ -0,0 +1,30 @@ +// This file configures the initialization of Sentry on the client. +// The config you add here will be used whenever a users loads a page in their browser. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://6698428c07e44ccbb83372b6057b407d@o452087.ingest.us.sentry.io/5439010", + + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1, + + // Setting this option to true will print useful information to the console while you're setting up Sentry. + debug: false, + + replaysOnErrorSampleRate: 1.0, + + // This sets the sample rate to be 10%. You may want this to be 100% while + // in development and sample at a lower rate in production + replaysSessionSampleRate: 0.1, + + // You can remove this option if you're not planning to use the Sentry Session Replay feature: + integrations: [ + Sentry.replayIntegration({ + // Additional Replay configuration goes in here, for example: + maskAllText: true, + blockAllMedia: true, + }), + ], +}); diff --git a/sentry.edge.config.ts b/sentry.edge.config.ts new file mode 100644 index 00000000..6c987084 --- /dev/null +++ b/sentry.edge.config.ts @@ -0,0 +1,16 @@ +// This file configures the initialization of Sentry for edge features (middleware, edge routes, and so on). +// The config you add here will be used whenever one of the edge features is loaded. +// Note that this config is unrelated to the Vercel Edge Runtime and is also required when running locally. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://6698428c07e44ccbb83372b6057b407d@o452087.ingest.us.sentry.io/5439010", + + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1, + + // Setting this option to true will print useful information to the console while you're setting up Sentry. + debug: false, +}); diff --git a/sentry.server.config.ts b/sentry.server.config.ts new file mode 100644 index 00000000..29ae1254 --- /dev/null +++ b/sentry.server.config.ts @@ -0,0 +1,19 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever the server handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from "@sentry/nextjs"; + +Sentry.init({ + dsn: "https://6698428c07e44ccbb83372b6057b407d@o452087.ingest.us.sentry.io/5439010", + + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1, + + // Setting this option to true will print useful information to the console while you're setting up Sentry. + debug: false, + + // uncomment the line below to enable Spotlight (https://spotlightjs.com) + // spotlight: process.env.NODE_ENV === 'development', + +}); diff --git a/src/components/RSS.tsx b/src/components/RSS.tsx index 14139ae1..75f3faab 100644 --- a/src/components/RSS.tsx +++ b/src/components/RSS.tsx @@ -1,6 +1,7 @@ import { useRouter } from 'next/router' import { useState } from 'react' import { FaSquareRss } from 'react-icons/fa6' +import * as Sentry from '@sentry/nextjs' export const RSS = () => { const [isCopied, setIsCopied] = useState(false) @@ -16,6 +17,7 @@ export const RSS = () => { setIsCopied(false) }, 3500) } catch (error) { + Sentry.captureException(error) console.error('Failed to copy to clipboard', error) } } diff --git a/src/pages/_error.jsx b/src/pages/_error.jsx new file mode 100644 index 00000000..46a61d69 --- /dev/null +++ b/src/pages/_error.jsx @@ -0,0 +1,17 @@ +import * as Sentry from "@sentry/nextjs"; +import Error from "next/error"; + +const CustomErrorComponent = (props) => { + return ; +}; + +CustomErrorComponent.getInitialProps = async (contextData) => { + // In case this is running in a serverless function, await this in order to give Sentry + // time to send the error before the lambda exits + await Sentry.captureUnderscoreErrorException(contextData); + + // This will contain the status code of the response + return Error.getInitialProps(contextData); +}; + +export default CustomErrorComponent; diff --git a/src/pages/api/album.ts b/src/pages/api/album.ts index 05738625..ef6e211b 100644 --- a/src/pages/api/album.ts +++ b/src/pages/api/album.ts @@ -1,6 +1,7 @@ import { AlbumApiResponse, GenericAndMaybeLegacyError, TrackAPIResponse } from '@/src/types' import { NextApiRequest, NextApiResponse } from 'next' import { getAlbumDetails } from '../../lib/spotify' +import * as Sentry from '@sentry/nextjs' const { parse } = require('spotify-uri') @@ -20,33 +21,39 @@ export default async ( id = query?.id } - const response = await getAlbumDetails(id) - if (response.status > 400) { - return res.status(200).json({ error: 'Album Not Found' }) + try { + const response = await getAlbumDetails(id) + + if (response.status > 400) { + return res.status(response.status).json({ error: 'Album Not Found' }) + } + + const albumType = response.album_type + const albumImageUrl = response.images[0].url + const title = response.name + const artists = response.artists.map((_artist) => _artist.name).join(', ') + const albumUrl = response.external_urls.spotify + + const number_of_tracks_in_album = response.tracks.items.length + const preview_url_track_number = randomNumberWithinRange(0, number_of_tracks_in_album - 1) + const previewUrl = response.tracks.items[preview_url_track_number].preview_url + const tracks: TrackAPIResponse[] = response.tracks.items.map( + (item): TrackAPIResponse => ({ + artists: item.artists.map((_artist) => _artist.name).join(', '), + previewUrl: item.preview_url, + title: item.name, + trackUrl: item.external_urls.spotify, + albumImageUrl + }) + ) + + return res + .status(200) + .json({ tracks, albumType, albumImageUrl, title, artists, albumUrl, previewUrl }) + } catch (error) { + Sentry.captureException(error) + return res.status(500).json({ error: 'Internal Server Error' }) } - - const albumType = response.album_type - const albumImageUrl = response.images[0].url - const title = response.name - const artists = response.artists.map((_artist) => _artist.name).join(', ') - const albumUrl = response.external_urls.spotify - - const number_of_tracks_in_album = response.tracks.items.length - const preview_url_track_number = randomNumberWithinRange(0, number_of_tracks_in_album - 1) - const previewUrl = response.tracks.items[preview_url_track_number].preview_url - const tracks: TrackAPIResponse[] = response.tracks.items.map( - (item): TrackAPIResponse => ({ - artists: item.artists.map((_artist) => _artist.name).join(', '), - previewUrl: item.preview_url, - title: item.name, - trackUrl: item.external_urls.spotify, - albumImageUrl - }) - ) - - return res - .status(200) - .json({ tracks, albumType, albumImageUrl, title, artists, albumUrl, previewUrl }) } function randomNumberWithinRange(myMin, myMax) { diff --git a/src/pages/api/dl.ts b/src/pages/api/dl.ts index 7f13b83c..a4ef10ba 100644 --- a/src/pages/api/dl.ts +++ b/src/pages/api/dl.ts @@ -1,5 +1,6 @@ import { NextApiRequest, NextApiResponse } from 'next'; import fetch from 'node-fetch'; +import * as Sentry from '@sentry/nextjs' export default async function handler(req: NextApiRequest, res: NextApiResponse) { // Get the URL of the file to download from the query parameters or request body @@ -19,6 +20,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) // Return the downloaded file as the response body response.body.pipe(res); } catch (error) { + Sentry.captureException(error) res.status(500).json({ error: 'Failed to download file' }); } } \ No newline at end of file diff --git a/src/pages/api/playlist.ts b/src/pages/api/playlist.ts index 818bbc60..deda3ac2 100644 --- a/src/pages/api/playlist.ts +++ b/src/pages/api/playlist.ts @@ -1,6 +1,7 @@ import { GenericAndMaybeLegacyError, PlaylistApiResponse, TrackAPIResponse } from '@/src/types' import { NextApiRequest, NextApiResponse } from 'next' import { getPlaylistDetails } from '../../lib/spotify' +import * as Sentry from '@sentry/nextjs' const { parse } = require('spotify-uri') @@ -20,28 +21,34 @@ export default async ( id = query?.id } - const response = await getPlaylistDetails(id) - if (response.status > 400) { - return res.status(200).json({ error: 'Playlist Not Found' }) - } + try { + + const response = await getPlaylistDetails(id) + if (response.status > 400) { + return res.status(response.status).json({ error: 'Playlist Not Found' }) + } - const playlistUrl = response.external_urls.spotify - const coverImageUrl = response.images[0].url - const title = response.name - const { description } = response - const ownerName = response.owner.display_name - const tracks: TrackAPIResponse[] = response.tracks.items.map( - (item): TrackAPIResponse => ({ - albumType: item.track.album.album_type, - albumImageUrl: item.track.album.images[0].url, - artists: item.track.artists.map((_artist) => _artist.name).join(', '), - previewUrl: item.track.preview_url, - title: item.track.name, - trackUrl: item.track.external_urls.spotify, - }) - ) - - return res.status(200).json({ playlistUrl, coverImageUrl, title, description, ownerName, tracks }) + const playlistUrl = response.external_urls.spotify + const coverImageUrl = response.images[0].url + const title = response.name + const { description } = response + const ownerName = response.owner.display_name + const tracks: TrackAPIResponse[] = response.tracks.items.map( + (item): TrackAPIResponse => ({ + albumType: item.track.album.album_type, + albumImageUrl: item.track.album.images[0].url, + artists: item.track.artists.map((_artist) => _artist.name).join(', '), + previewUrl: item.track.preview_url, + title: item.track.name, + trackUrl: item.track.external_urls.spotify, + }) + ) + + return res.status(200).json({ playlistUrl, coverImageUrl, title, description, ownerName, tracks }) + } catch (error) { + Sentry.captureException(error) + return res.status(500).json({ error: 'Internal Server Error' }) + } } function randomNumberWithinRange(myMin, myMax) { diff --git a/src/pages/api/rss.ts b/src/pages/api/rss.ts index eccdbddf..9ee373eb 100644 --- a/src/pages/api/rss.ts +++ b/src/pages/api/rss.ts @@ -3,7 +3,7 @@ import { NextApiRequest, NextApiResponse } from 'next'; import { allMixes } from '@/contentlayer/generated' import fetch from 'node-fetch'; import { DEFAULT_IMAGE_URL } from '@/src/constants'; - +import * as Sentry from '@sentry/nextjs' export default async (req: NextApiRequest, res: NextApiResponse) => { @@ -20,12 +20,12 @@ export default async (req: NextApiRequest, res: NextApiResponse) => { ${new Date(mix.date).toUTCString()} ${mix.description ? - `${encodeXML(mix.description)}. Get the tracklist and more a immersive experience over at ${url}` : '' + `${encodeXML(mix.description)}. Get the tracklist and more a immersive experience over at ${url}` : '' } ${mix.title} ${encodeXML(mix.description)} - ${mix.genres ? `${mix.genres.join(', ')}`: ''} + ${mix.genres ? `${mix.genres.join(', ')}` : ''} Guide Fari Guide Fari no @@ -60,7 +60,7 @@ export default async (req: NextApiRequest, res: NextApiResponse) => { return res.status(200).send(sitemap); } catch (e: unknown) { - console.log('e:', e) + Sentry.captureException(e) if (!(e instanceof Error)) { throw e; } @@ -70,7 +70,7 @@ export default async (req: NextApiRequest, res: NextApiResponse) => { }; const encodeXML = (str: string) => -str + str .replace(/&/g, '&') .replace(//g, '>') diff --git a/src/pages/api/sentry-example-api.js b/src/pages/api/sentry-example-api.js new file mode 100644 index 00000000..3b306a04 --- /dev/null +++ b/src/pages/api/sentry-example-api.js @@ -0,0 +1,11 @@ +import * as Sentry from '@sentry/nextjs' + +export default function handler(_req, res) { + try { + throw new Error("now it will show up in the dashboard"); + } catch (error) { + Sentry.addBreadcrumb({ message: "sentry-example-api error", category: "sentry-example-api", level: "error", data: { demoData: 'is this working' } }); + Sentry.captureException(error); + res.status(500).json({ error: "Its me. not you." }); + } +} \ No newline at end of file diff --git a/src/pages/api/track.ts b/src/pages/api/track.ts index 2488bf20..1046da07 100644 --- a/src/pages/api/track.ts +++ b/src/pages/api/track.ts @@ -1,6 +1,7 @@ import { GenericAndMaybeLegacyError, TrackAPIResponse } from '@/src/types' import { NextApiRequest, NextApiResponse } from 'next' import { getTrackDetails } from '../../lib/spotify' +import * as Sentry from '@sentry/nextjs' const { parse } = require('spotify-uri') @@ -20,17 +21,23 @@ export default async ( id = query?.id } - const response = await getTrackDetails(id) - if (response.status > 400) { - return res.status(200).json({ error: 'Track Not Found' }) - } + try { + + const response = await getTrackDetails(id) + if (response.status > 400) { + return res.status(response.status).json({ error: 'Track Not Found' }) + } - const albumType = response.album.album_type - const albumImageUrl = response.album.images[0].url - const title = response.name - const artists = response.artists.map((_artist) => _artist.name).join(', ') - const trackUrl = response.external_urls.spotify - const previewUrl = response.preview_url + const albumType = response.album.album_type + const albumImageUrl = response.album.images[0].url + const title = response.name + const artists = response.artists.map((_artist) => _artist.name).join(', ') + const trackUrl = response.external_urls.spotify + const previewUrl = response.preview_url - return res.status(200).json({ albumType, albumImageUrl, title, artists, trackUrl, previewUrl }) + return res.status(200).json({ albumType, albumImageUrl, title, artists, trackUrl, previewUrl }) + } catch (error) { + Sentry.captureException(error) + return res.status(500).json({ error: 'Internal Server Error' }) + } } diff --git a/src/pages/sentry-example-page.jsx b/src/pages/sentry-example-page.jsx new file mode 100644 index 00000000..e5085c30 --- /dev/null +++ b/src/pages/sentry-example-page.jsx @@ -0,0 +1,93 @@ +import Head from 'next/head' +import * as Sentry from '@sentry/nextjs' + +export default function Page() { + return ( +
+ + Sentry Onboarding + + + +
+

+ + + +

+ +

Get started by sending us a sample error:

+ + +

+ Next, look for the error on the{' '} + Issues Page. +

+

+ For more information, see{' '} + + https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +

+
+
+ ) +} diff --git a/yarn.lock b/yarn.lock index c971dc2a..101a38cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -900,7 +900,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -2020,6 +2020,27 @@ resolved "https://registry.yarnpkg.com/@resvg/resvg-wasm/-/resvg-wasm-2.4.0.tgz#e01164b9a267c822e1ff797daa2fb91b663ea6f0" integrity sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg== +"@rollup/plugin-commonjs@24.0.0": + version "24.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c" + integrity sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g== + dependencies: + "@rollup/pluginutils" "^5.0.1" + commondir "^1.0.1" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.27.0" + +"@rollup/pluginutils@^5.0.1": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@rollup/rollup-android-arm-eabi@4.9.6": version "4.9.6" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" @@ -2090,6 +2111,160 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9" integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA== +"@sentry-internal/feedback@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-7.113.0.tgz#90a3c5493e289d589cfde79330fca549a24f41a4" + integrity sha512-eEmL8QXauUnM3FXGv0GT29RpL0Jo0pkn/uMu3aqjhQo7JKNqUGVYIUxJxiGWbVMbDXqPQ7L66bjjMS3FR1GM2g== + dependencies: + "@sentry/core" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + +"@sentry-internal/replay-canvas@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-7.113.0.tgz#8a0165494b0a0ba7b1ae45166ca90a8749c38b7a" + integrity sha512-K8uA42aobNF/BAXf14el15iSAi9fonLBUrjZi6nPDq7zaA8rPvfcTL797hwCbqkETz2zDf52Jz7I3WFCshDoUw== + dependencies: + "@sentry/core" "7.113.0" + "@sentry/replay" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + +"@sentry-internal/tracing@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.113.0.tgz#936f23205ab53be62f1753b923eddc243cefde86" + integrity sha512-8MDnYENRMnEfQjvN4gkFYFaaBSiMFSU/6SQZfY9pLI3V105z6JQ4D0PGMAUVowXilwNZVpKNYohE7XByuhEC7Q== + dependencies: + "@sentry/core" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + +"@sentry/browser@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.113.0.tgz#09b77812cbf476eacdccdc714ba4e4ba2c170a88" + integrity sha512-PdyVHPOprwoxGfKGsP2dXDWO0MBDW1eyP7EZlfZvM1A4hjk6ZRNfCv30g+TrqX4hiZDKzyqN3+AdP7N/J2IX0Q== + dependencies: + "@sentry-internal/feedback" "7.113.0" + "@sentry-internal/replay-canvas" "7.113.0" + "@sentry-internal/tracing" "7.113.0" + "@sentry/core" "7.113.0" + "@sentry/integrations" "7.113.0" + "@sentry/replay" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + +"@sentry/cli@^1.77.1": + version "1.77.3" + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.77.3.tgz#c40b4d09b0878d6565d42a915855add99db4fec3" + integrity sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ== + dependencies: + https-proxy-agent "^5.0.0" + mkdirp "^0.5.5" + node-fetch "^2.6.7" + progress "^2.0.3" + proxy-from-env "^1.1.0" + which "^2.0.2" + +"@sentry/core@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.113.0.tgz#84307eabf03ece9304894ad24ee15581a220c5c7" + integrity sha512-pg75y3C5PG2+ur27A0Re37YTCEnX0liiEU7EOxWDGutH17x3ySwlYqLQmZsFZTSnvzv7t3MGsNZ8nT5O0746YA== + dependencies: + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + +"@sentry/integrations@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.113.0.tgz#cce71e07cf90c4bf9b22f85c3ce22d9ba926ae5a" + integrity sha512-w0sspGBQ+6+V/9bgCkpuM3CGwTYoQEVeTW6iNebFKbtN7MrM3XsGAM9I2cW1jVxFZROqCBPFtd2cs5n0j14aAg== + dependencies: + "@sentry/core" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + localforage "^1.8.1" + +"@sentry/nextjs@^7.105.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-7.113.0.tgz#c9c5eccadd6e2f3b8ad0b949ca4dfba0d6fa3340" + integrity sha512-lI5iJfbAC3dSakwq5+/JP58mLftxlDPPeY5ttcIuSHmNV/oobETJFTbWRIojUWYYn0E+Eea2OSdY5jPqxI7+iA== + dependencies: + "@rollup/plugin-commonjs" "24.0.0" + "@sentry/core" "7.113.0" + "@sentry/integrations" "7.113.0" + "@sentry/node" "7.113.0" + "@sentry/react" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + "@sentry/vercel-edge" "7.113.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.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.113.0.tgz#c0d15a50a167f6cfc3a736838c9a919d5d6f1b01" + integrity sha512-Vam4Ia0I9fhVw8GJOzcLP7MiiHJSKl8L9LzLMMLG3+2/dFnDQOyS7sOfk3GqgpwzqPiusP9vFu7CFSX7EMQbTg== + dependencies: + "@sentry-internal/tracing" "7.113.0" + "@sentry/core" "7.113.0" + "@sentry/integrations" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + +"@sentry/react@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.113.0.tgz#8e21c92e9691ea881639596d7e60a996b23ba229" + integrity sha512-+zVPz+h5Wydq4ntekw3/dXq5jeHIpZoQ2iqhB96PA9Y94JIq178i/xIP204S1h6rN7cmWAqtR93vnPKdxnlUbQ== + dependencies: + "@sentry/browser" "7.113.0" + "@sentry/core" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + hoist-non-react-statics "^3.3.2" + +"@sentry/replay@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.113.0.tgz#db41b792e5d9966a9b1ca4eb1695ad7100f39b50" + integrity sha512-UD2IaphOWKFdeGR+ZiaNAQ+wFsnwbJK6PNwcW6cHmWKv9COlKufpFt06lviaqFZ8jmNrM4H+r+R8YVTrqCuxgg== + dependencies: + "@sentry-internal/tracing" "7.113.0" + "@sentry/core" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + +"@sentry/types@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.113.0.tgz#2193c9933838302c82814771b03a8647fa684ffb" + integrity sha512-PJbTbvkcPu/LuRwwXB1He8m+GjDDLKBtu3lWg5xOZaF5IRdXQU2xwtdXXsjge4PZR00tF7MO7X8ZynTgWbYaew== + +"@sentry/utils@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.113.0.tgz#1e6e790c9d84e4809b2bb529bbd33a506b6db7bd" + integrity sha512-nzKsErwmze1mmEsbW2AwL2oB+I5v6cDEJY4sdfLekA4qZbYZ8pV5iWza6IRl4XfzGTE1qpkZmEjPU9eyo0yvYw== + dependencies: + "@sentry/types" "7.113.0" + +"@sentry/vercel-edge@7.113.0": + version "7.113.0" + resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-7.113.0.tgz#0cc3714d9d2c55e1f083c38d8fefa278ee93bc87" + integrity sha512-cHbo+v7ECRNluVWMJZqsNelf3JrV5Qw/aRH4Dw74IdErCYROAQx1pEuE7BnM3rIEgOQAMR/J/Fu7GFGecSbzTA== + dependencies: + "@sentry-internal/tracing" "7.113.0" + "@sentry/core" "7.113.0" + "@sentry/integrations" "7.113.0" + "@sentry/types" "7.113.0" + "@sentry/utils" "7.113.0" + +"@sentry/webpack-plugin@1.21.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-1.21.0.tgz#bbe7cb293751f80246a4a56f9a7dd6de00f14b58" + integrity sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og== + dependencies: + "@sentry/cli" "^1.77.1" + webpack-sources "^2.0.0 || ^3.0.0" + "@shuding/opentype.js@1.4.0-beta.0": version "1.4.0-beta.0" resolved "https://registry.yarnpkg.com/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz#5d1e7e9e056f546aad41df1c5043f8f85d39e24b" @@ -2447,6 +2622,13 @@ acorn@^8.0.0, acorn@^8.10.0, acorn@^8.11.3, acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + agent-base@^7.0.2, agent-base@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" @@ -2831,6 +3013,14 @@ chai@^4.3.10: pathval "^1.1.1" type-detect "^4.0.8" +chalk@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -2996,6 +3186,11 @@ comment-json@^4.2.3: has-own-prop "^2.0.0" repeat-string "^1.6.1" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + compute-scroll-into-view@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-2.0.4.tgz#2b444b2b9e4724819d2531efacb7ac094155fdf6" @@ -3831,6 +4026,11 @@ estree-util-visit@^2.0.0: "@types/estree-jsx" "^1.0.0" "@types/unist" "^3.0.0" +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + estree-walker@^3.0.0, estree-walker@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" @@ -4140,6 +4340,17 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -4367,6 +4578,13 @@ hey-listen@^1.0.8: resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + html-encoding-sniffer@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" @@ -4387,6 +4605,14 @@ http-proxy-agent@^7.0.0: agent-base "^7.1.0" debug "^4.3.4" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + https-proxy-agent@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" @@ -4422,6 +4648,11 @@ imagescript@^1.2.16: resolved "https://registry.yarnpkg.com/imagescript/-/imagescript-1.2.18.tgz#058744cb22a49065c78415304a537d608c02d9ab" integrity sha512-8AwTawraXovLo2PgKvFt96SZqJDwl0CnHDyrtoPUQHMmoA7u9M8EnqFZwCofSM+Uo623Z580iKW74bs2fzjoYQ== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -4649,6 +4880,13 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-reference@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + is-reference@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c" @@ -4903,6 +5141,13 @@ lexical@^0.12.4: resolved "https://registry.yarnpkg.com/lexical/-/lexical-0.12.6.tgz#6ffd60dcfe770c1a6fdc03c2ffd9e49182d16102" integrity sha512-Nlfjc+k9cIWpOMv7XufF0Mv09TAXSemNAuAqFLaOwTcN+RvhvYTDtVLSp9D9r+5I097fYs1Vf/UYwH2xEpkFfQ== +lie@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== + dependencies: + immediate "~3.0.5" + lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -4934,6 +5179,13 @@ local-pkg@^0.5.0: mlly "^1.4.2" pkg-types "^1.0.3" +localforage@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" + integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== + dependencies: + lie "3.1.1" + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -5016,6 +5268,13 @@ lz-string@^1.4.4, lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + magic-string@^0.30.5: version "0.30.6" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.6.tgz#996e21b42f944e45591a68f0905d6a740a12506c" @@ -6013,6 +6272,13 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -6023,6 +6289,13 @@ minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + mlly@^1.2.0, mlly@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.5.0.tgz#8428a4617d54cc083d3009030ac79739a0e5447a" @@ -6151,6 +6424,13 @@ node-domexception@^1.0.0: resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== +node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^3.0.0, node-fetch@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" @@ -6638,6 +6918,11 @@ prismjs@^1.27.0: resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -6670,6 +6955,11 @@ protobufjs@^7.2.2, protobufjs@^7.2.4: "@types/node" ">=13.7.0" long "^5.0.0" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -6722,7 +7012,7 @@ react-icons@^5.0.1: resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.0.1.tgz#1694e11bfa2a2888cab47dcc30154ce90485feee" integrity sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw== -react-is@^16.13.1: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -6898,7 +7188,7 @@ resolve-pkg-maps@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve@^1.1.7, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: +resolve@1.22.8, resolve@^1.1.7, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -6928,6 +7218,13 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup@2.78.0: + version "2.78.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.0.tgz#00995deae70c0f712ea79ad904d5f6b033209d9e" + integrity sha512-4+YfbQC9QEVvKTanHhIAFVUFSRsezvQF8vFOJwtGfb9Bb+r014S+qryr9PSmw8x6sMnPkmFBGAvIFVQxvJxjtg== + optionalDependencies: + fsevents "~2.3.2" + rollup@^4.2.0: version "4.9.6" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" @@ -7142,6 +7439,13 @@ stackback@0.0.2: resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + static-browser-server@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/static-browser-server/-/static-browser-server-1.0.3.tgz#9030d141b99ed92c8eec1a7546b87548fd036f5d" @@ -7466,6 +7770,11 @@ tr46@^5.0.0: dependencies: punycode "^2.3.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + trim-lines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" @@ -7528,6 +7837,11 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + type-fest@^3.12.0: version "3.13.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" @@ -7912,11 +8226,21 @@ web-streams-polyfill@^3.0.3: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz#32e26522e05128203a7de59519be3c648004343b" integrity sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ== +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== +"webpack-sources@^2.0.0 || ^3.0.0": + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + whatwg-encoding@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" @@ -7937,6 +8261,14 @@ whatwg-url@^14.0.0: tr46 "^5.0.0" webidl-conversions "^7.0.0" +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -7987,7 +8319,7 @@ which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.1" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==