From cf106e46da92e3c7404169df87eb08ed9359b0f4 Mon Sep 17 00:00:00 2001 From: Jake Jarvis Date: Mon, 25 Jul 2022 13:11:40 -0400 Subject: [PATCH] refactor more hooks --- components/Captcha/Captcha.tsx | 4 +- components/CodePenEmbed/CodePenEmbed.tsx | 4 +- components/Comments/Comments.tsx | 2 +- components/Layout/Layout.tsx | 2 +- components/RelativeTime/RelativeTime.tsx | 2 +- components/ThemeToggle/ThemeToggle.tsx | 8 +- components/TweetEmbed/TweetEmbed.tsx | 4 +- components/Video/Video.tsx | 2 +- components/YouTubeEmbed/YouTubeEmbed.tsx | 2 +- contexts/ThemeContext.tsx | 4 +- ...t-mount-state.ts => useFirstMountState.ts} | 4 +- .../{use-has-mounted.ts => useHasMounted.ts} | 4 +- hooks/useLocalStorage.ts | 113 ++++++ hooks/{use-media.ts => useMedia.ts} | 6 +- hooks/{use-theme.ts => useTheme.ts} | 4 +- ...se-update-effect.ts => useUpdateEffect.ts} | 6 +- package.json | 5 +- yarn.lock | 366 +++++------------- 18 files changed, 246 insertions(+), 296 deletions(-) rename hooks/{use-first-mount-state.ts => useFirstMountState.ts} (70%) rename hooks/{use-has-mounted.ts => useHasMounted.ts} (72%) create mode 100644 hooks/useLocalStorage.ts rename hooks/{use-media.ts => useMedia.ts} (79%) rename hooks/{use-theme.ts => useTheme.ts} (87%) rename hooks/{use-update-effect.ts => useUpdateEffect.ts} (65%) diff --git a/components/Captcha/Captcha.tsx b/components/Captcha/Captcha.tsx index 0e50ebab..b6225369 100644 --- a/components/Captcha/Captcha.tsx +++ b/components/Captcha/Captcha.tsx @@ -1,6 +1,6 @@ import HCaptcha from "@hcaptcha/react-hcaptcha"; -import { useHasMounted } from "../../hooks/use-has-mounted"; -import { useTheme } from "../../hooks/use-theme"; +import useHasMounted from "../../hooks/useHasMounted"; +import useTheme from "../../hooks/useTheme"; export type CaptchaProps = { size?: "normal" | "compact" | "invisible"; diff --git a/components/CodePenEmbed/CodePenEmbed.tsx b/components/CodePenEmbed/CodePenEmbed.tsx index e151d61e..f7c26dc5 100644 --- a/components/CodePenEmbed/CodePenEmbed.tsx +++ b/components/CodePenEmbed/CodePenEmbed.tsx @@ -1,6 +1,6 @@ import IFrame from "../IFrame"; -import { useHasMounted } from "../../hooks/use-has-mounted"; -import { useTheme } from "../../hooks/use-theme"; +import useHasMounted from "../../hooks/useHasMounted"; +import useTheme from "../../hooks/useTheme"; import { styled } from "../../lib/styles/stitches.config"; const Wrapper = styled("div", { diff --git a/components/Comments/Comments.tsx b/components/Comments/Comments.tsx index 779346a3..a7f35838 100644 --- a/components/Comments/Comments.tsx +++ b/components/Comments/Comments.tsx @@ -1,5 +1,5 @@ import Giscus from "@giscus/react"; -import { useTheme } from "../../hooks/use-theme"; +import useTheme from "../../hooks/useTheme"; import { styled, theme } from "../../lib/styles/stitches.config"; import { giscusConfig } from "../../lib/config"; import type { ComponentProps } from "react"; diff --git a/components/Layout/Layout.tsx b/components/Layout/Layout.tsx index 7b286099..d7e091ce 100644 --- a/components/Layout/Layout.tsx +++ b/components/Layout/Layout.tsx @@ -2,7 +2,7 @@ import Head from "next/head"; import Header from "../Header"; import Footer from "../Footer"; import { SkipToContentLink, SkipToContentTarget } from "../SkipToContent"; -import { useTheme } from "../../hooks/use-theme"; +import useTheme from "../../hooks/useTheme"; import { styled, theme, darkTheme } from "../../lib/styles/stitches.config"; import type { ComponentProps } from "react"; diff --git a/components/RelativeTime/RelativeTime.tsx b/components/RelativeTime/RelativeTime.tsx index 28009d85..588e432a 100644 --- a/components/RelativeTime/RelativeTime.tsx +++ b/components/RelativeTime/RelativeTime.tsx @@ -1,4 +1,4 @@ -import { useHasMounted } from "../../hooks/use-has-mounted"; +import useHasMounted from "../../hooks/useHasMounted"; import { formatDate, formatTimeAgo } from "../../lib/helpers/format-date"; export type RelativeTimeProps = { diff --git a/components/ThemeToggle/ThemeToggle.tsx b/components/ThemeToggle/ThemeToggle.tsx index 7ec1caa4..e38b093f 100644 --- a/components/ThemeToggle/ThemeToggle.tsx +++ b/components/ThemeToggle/ThemeToggle.tsx @@ -1,9 +1,9 @@ import { useEffect, useId } from "react"; import { useSpring, animated, Globals } from "@react-spring/web"; -import { useMedia } from "../../hooks/use-media"; -import { useFirstMountState } from "../../hooks/use-first-mount-state"; -import { useTheme } from "../../hooks/use-theme"; -import { useHasMounted } from "../../hooks/use-has-mounted"; +import useMedia from "../../hooks/useMedia"; +import useFirstMountState from "../../hooks/useFirstMountState"; +import useTheme from "../../hooks/useTheme"; +import useHasMounted from "../../hooks/useHasMounted"; import { styled, theme } from "../../lib/styles/stitches.config"; const Button = styled("button", { diff --git a/components/TweetEmbed/TweetEmbed.tsx b/components/TweetEmbed/TweetEmbed.tsx index ae9623db..e0a19971 100644 --- a/components/TweetEmbed/TweetEmbed.tsx +++ b/components/TweetEmbed/TweetEmbed.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { TwitterTweetEmbed } from "react-twitter-embed"; -import { useUpdateEffect } from "../../hooks/use-update-effect"; -import { useTheme } from "../../hooks/use-theme"; +import useUpdateEffect from "../../hooks/useUpdateEffect"; +import useTheme from "../../hooks/useTheme"; import { styled } from "../../lib/styles/stitches.config"; const Wrapper = styled("div", { diff --git a/components/Video/Video.tsx b/components/Video/Video.tsx index a0d371d4..0d31559d 100644 --- a/components/Video/Video.tsx +++ b/components/Video/Video.tsx @@ -1,5 +1,5 @@ import ReactPlayer from "react-player/file"; -import { useHasMounted } from "../../hooks/use-has-mounted"; +import useHasMounted from "../../hooks/useHasMounted"; import { styled, theme } from "../../lib/styles/stitches.config"; import type { FilePlayerProps } from "react-player/file"; diff --git a/components/YouTubeEmbed/YouTubeEmbed.tsx b/components/YouTubeEmbed/YouTubeEmbed.tsx index 224e91d4..8e0825e4 100644 --- a/components/YouTubeEmbed/YouTubeEmbed.tsx +++ b/components/YouTubeEmbed/YouTubeEmbed.tsx @@ -1,5 +1,5 @@ import ReactPlayer from "react-player/youtube"; -import { useHasMounted } from "../../hooks/use-has-mounted"; +import useHasMounted from "../../hooks/useHasMounted"; import { styled, theme } from "../../lib/styles/stitches.config"; import type { YouTubePlayerProps } from "react-player/youtube"; diff --git a/contexts/ThemeContext.tsx b/contexts/ThemeContext.tsx index 98b7c2dd..28715f73 100644 --- a/contexts/ThemeContext.tsx +++ b/contexts/ThemeContext.tsx @@ -1,6 +1,6 @@ import { createContext, useCallback, useEffect, useState } from "react"; -import { useLocalStorage } from "react-use"; -import { useMedia } from "../hooks/use-media"; +import useLocalStorage from "../hooks/useLocalStorage"; +import useMedia from "../hooks/useMedia"; import { themeStorageKey } from "../lib/styles/stitches.config"; import type { Context, PropsWithChildren } from "react"; diff --git a/hooks/use-first-mount-state.ts b/hooks/useFirstMountState.ts similarity index 70% rename from hooks/use-first-mount-state.ts rename to hooks/useFirstMountState.ts index 703063e9..9aac0568 100644 --- a/hooks/use-first-mount-state.ts +++ b/hooks/useFirstMountState.ts @@ -1,6 +1,6 @@ import { useRef } from "react"; -export const useFirstMountState = (): boolean => { +const useFirstMountState = (): boolean => { const isFirstMount = useRef(true); if (isFirstMount.current) { @@ -11,3 +11,5 @@ export const useFirstMountState = (): boolean => { return isFirstMount.current; }; + +export default useFirstMountState; diff --git a/hooks/use-has-mounted.ts b/hooks/useHasMounted.ts similarity index 72% rename from hooks/use-has-mounted.ts rename to hooks/useHasMounted.ts index 523ba82f..cee4e5f7 100644 --- a/hooks/use-has-mounted.ts +++ b/hooks/useHasMounted.ts @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; -export const useHasMounted = (): boolean => { +const useHasMounted = (): boolean => { const [hasMounted, setHasMounted] = useState(false); useEffect(() => { @@ -9,3 +9,5 @@ export const useHasMounted = (): boolean => { return hasMounted; }; + +export default useHasMounted; diff --git a/hooks/useLocalStorage.ts b/hooks/useLocalStorage.ts new file mode 100644 index 00000000..e40e9264 --- /dev/null +++ b/hooks/useLocalStorage.ts @@ -0,0 +1,113 @@ +// Modified from https://github.com/streamich/react-use/blob/e53ca94a0b1f20270b0f75dc2ca1fecf1e119dde/src/useLocalStorage.ts + +import { useCallback, useState, useRef, useLayoutEffect } from "react"; +import type { Dispatch, SetStateAction } from "react"; + +type ParserOptions = + | { + raw: true; + } + | { + raw: false; + serializer: (value: T) => string; + deserializer: (value: string) => T; + }; + +// eslint-disable-next-line @typescript-eslint/no-empty-function +const noop = () => {}; + +const useLocalStorage = ( + key: string, + initialValue?: T, + options?: ParserOptions +): [T | undefined, Dispatch>, () => void] => { + if (typeof window === "undefined" || typeof window.Storage === "undefined") { + return [initialValue as T, noop, noop]; + } + + if (!key) { + throw new Error("useLocalStorage key may not be falsy"); + } + + const deserializer = options ? (options.raw ? (value: unknown) => value : options.deserializer) : JSON.parse; + + // eslint-disable-next-line react-hooks/rules-of-hooks + const initializer = useRef((key: string) => { + try { + const serializer = options ? (options.raw ? String : options.serializer) : JSON.stringify; + const localStorageValue = window.localStorage.getItem(key); + + if (localStorageValue !== null) { + return deserializer(localStorageValue); + } else { + initialValue && window.localStorage.setItem(key, serializer(initialValue)); + return initialValue; + } + } catch (error) { + // If user is in private mode or has storage restriction + // localStorage can throw. JSON.parse and JSON.stringify + // can throw, too. + return initialValue; + } + }); + + // eslint-disable-next-line react-hooks/rules-of-hooks + const [state, setState] = useState(() => initializer.current(key)); + + // eslint-disable-next-line react-hooks/rules-of-hooks + useLayoutEffect(() => setState(initializer.current(key)), [key]); + + // eslint-disable-next-line react-hooks/rules-of-hooks + const set: Dispatch> = useCallback( + (valOrFunc) => { + try { + // eslint-disable-next-line @typescript-eslint/ban-types + const newState = typeof valOrFunc === "function" ? (valOrFunc as Function)(state) : valOrFunc; + + if (typeof newState === "undefined") { + return; + } + + let value: string; + + if (options) { + if (options.raw) { + if (typeof newState === "string") { + value = newState; + } else { + value = JSON.stringify(newState); + } + } else if (options.serializer) { + value = options.serializer(newState); + } else { + value = JSON.stringify(newState); + } + } else { + value = JSON.stringify(newState); + } + + window.localStorage.setItem(key, value); + setState(deserializer(value)); + } catch (error) { + // If user is in private mode or has storage restriction + // localStorage can throw. Also JSON.stringify can throw. + } + }, + [key, setState] // eslint-disable-line react-hooks/exhaustive-deps + ); + + // eslint-disable-next-line react-hooks/rules-of-hooks + const remove = useCallback(() => { + try { + window.localStorage.removeItem(key); + setState(undefined); + } catch (error) { + // If user is in private mode or has storage restriction + // localStorage can throw. + } + }, [key, setState]); + + return [state, set, remove]; +}; + +export default useLocalStorage; diff --git a/hooks/use-media.ts b/hooks/useMedia.ts similarity index 79% rename from hooks/use-media.ts rename to hooks/useMedia.ts index 571f2626..bad34f76 100644 --- a/hooks/use-media.ts +++ b/hooks/useMedia.ts @@ -1,4 +1,4 @@ -// https://github.com/streamich/react-use/blob/e53ca94a0b1f20270b0f75dc2ca1fecf1e119dde/src/useMedia.ts +// Modified from https://github.com/streamich/react-use/blob/e53ca94a0b1f20270b0f75dc2ca1fecf1e119dde/src/useMedia.ts import { useEffect, useState } from "react"; @@ -14,7 +14,7 @@ const getInitialState = (query: string, defaultState?: boolean): boolean => { return false; }; -export const useMedia = (query: string, defaultState?: boolean): boolean => { +const useMedia = (query: string, defaultState?: boolean): boolean => { const [state, setState] = useState(getInitialState(query, defaultState)); useEffect(() => { @@ -39,3 +39,5 @@ export const useMedia = (query: string, defaultState?: boolean): boolean => { return state; }; + +export default useMedia; diff --git a/hooks/use-theme.ts b/hooks/useTheme.ts similarity index 87% rename from hooks/use-theme.ts rename to hooks/useTheme.ts index c2e7ef9a..ec8edc80 100644 --- a/hooks/use-theme.ts +++ b/hooks/useTheme.ts @@ -2,7 +2,7 @@ import { useContext } from "react"; import { ThemeContext } from "../contexts/ThemeContext"; // convenience hook to get access to ThemeContext's state/functions from pages/components/etc. -export const useTheme = () => { +const useTheme = () => { const context = useContext(ThemeContext); if (!context) { @@ -11,3 +11,5 @@ export const useTheme = () => { return context; }; + +export default useTheme; diff --git a/hooks/use-update-effect.ts b/hooks/useUpdateEffect.ts similarity index 65% rename from hooks/use-update-effect.ts rename to hooks/useUpdateEffect.ts index d9095523..d28bed04 100644 --- a/hooks/use-update-effect.ts +++ b/hooks/useUpdateEffect.ts @@ -1,8 +1,8 @@ import { useEffect } from "react"; -import { useFirstMountState } from "./use-first-mount-state"; +import useFirstMountState from "./useFirstMountState"; // identical to `useEffect()` but ignores the first invocation -export const useUpdateEffect: typeof useEffect = (effect, deps) => { +const useUpdateEffect: typeof useEffect = (effect, deps) => { const isFirstMount = useFirstMountState(); useEffect(() => { @@ -11,3 +11,5 @@ export const useUpdateEffect: typeof useEffect = (effect, deps) => { } }, deps); // eslint-disable-line react-hooks/exhaustive-deps }; + +export default useUpdateEffect; diff --git a/package.json b/package.json index efe43e1a..cf7fd136 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "gray-matter": "^4.0.3", "hex-to-rgba": "^2.0.1", "marked": "^4.0.18", - "next": "12.2.3", + "next": "12.2.4-canary.0", "next-mdx-remote": "^4.1.0", "next-seo": "^5.5.0", "p-map": "^5.5.0", @@ -59,7 +59,6 @@ "react-player": "^2.10.1", "react-textarea-autosize": "^8.3.4", "react-twitter-embed": "^4.0.4", - "react-use": "^17.4.0", "rehype-prism-plus": "^1.4.2", "rehype-slug": "^5.0.1", "remark-gfm": "^3.0.1", @@ -87,7 +86,7 @@ "@typescript-eslint/parser": "^5.30.7", "cross-env": "^7.0.3", "eslint": "~8.20.0", - "eslint-config-next": "12.2.3", + "eslint-config-next": "12.2.4-canary.0", "eslint-config-prettier": "~8.5.0", "eslint-plugin-prettier": "~4.2.1", "lint-staged": "^13.0.3", diff --git a/yarn.lock b/yarn.lock index e00a83a9..d2f4b311 100644 --- a/yarn.lock +++ b/yarn.lock @@ -948,7 +948,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.9", "@babel/runtime@^7.18.9", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.9", "@babel/runtime@^7.18.9", "@babel/runtime@^7.8.4": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== @@ -1127,82 +1127,82 @@ "@types/mdx" "^2.0.0" "@types/react" ">=16" -"@next/env@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.3.tgz#64f210e74c137d3d9feea738795b055a7f8aebe2" - integrity sha512-2lWKP5Xcvnor70NaaROZXBvU8z9mFReePCG8NhZw6NyNGnPvC+8s+Cre/63LAB1LKzWw/e9bZJnQUg0gYFRb2Q== +"@next/env@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.4-canary.0.tgz#75b3af448f81e00f1f904f8d772806b2d1776d09" + integrity sha512-4O6ICdE0dydgK4l/swg/JwQUKX7mkdjfHd47JkxwH9iVma2DMBEbztY8/XxqIWzRHs1w0cYQEILUMSoRMrMnnQ== -"@next/eslint-plugin-next@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.2.3.tgz#63726691aac6a7f01b64190a0323d590a0e8154d" - integrity sha512-B2e8Yg1MpuLsGxhCx4rU8/Tcnr5wFmCx1O2eyLXBPnaCcsFXfGCo067ujagtDLtWASL3GNgzg78U1SB0dbc38A== +"@next/eslint-plugin-next@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.2.4-canary.0.tgz#bb3ff432889eb6e981cecc07128098bd0dd44dab" + integrity sha512-uevhDZBrXdAEBNTuUe2tIrzhz2qpPaAPBykfw985RAS0YzWx5FCWBezZI1eEwpQlTnqKWmYB4AvcJG0xFY18YA== dependencies: glob "7.1.7" -"@next/swc-android-arm-eabi@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.3.tgz#91388c8ec117d59ee80d2c1d4dc65fdfd267d2d4" - integrity sha512-JxmCW9XB5PYnkGE67BdnBTdqW0SW6oMCiPMHLdjeRi4T3U4JJKJGnjQld99+6TPOfPWigtw3W7Cijp5gc+vJ/w== +"@next/swc-android-arm-eabi@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.4-canary.0.tgz#56119c8b52c7fcfab1252c4391ced6b14a6e1742" + integrity sha512-FF/dF0ADvx87eF3SiHEKLRA9WjUCD5B0GOq4SxZ/b2f69pX6WHi0E8Esx0/+KkCVgLppe08AIZiCvgLv34pcdA== -"@next/swc-android-arm64@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.3.tgz#9be33553861f6494616b910a23abd5a1b0d7fb4b" - integrity sha512-3l4zXpWnzy0fqoedsFRxzMy/eGlMMqn6IwPEuBmtEQ4h7srmQFHyT+Bk+eVHb0o1RQ7/TloAa+mu8JX5tz/5tA== +"@next/swc-android-arm64@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.4-canary.0.tgz#2c7f06a6eb2d3a1adcd77e6e69782f7999056293" + integrity sha512-PSKex1EvLA/7zpV9Ogr6cK6y1yfntCUDQoMUOkn1cwpPhvdq1b+9AhEwvw9X3vvJ3kVgNO9qQ2aiYbT98AT55g== -"@next/swc-darwin-arm64@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.3.tgz#ce1a5a7320936b2644b765ace3283e5d1676b6a0" - integrity sha512-eutDO/RH6pf7+8zHo3i2GKLhF0qaMtxWpY8k3Oa1k+CyrcJ0IxwkfH/x3f75jTMeCrThn6Uu8j3WeZOxvhto1Q== +"@next/swc-darwin-arm64@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.4-canary.0.tgz#3c12fad45be1c0d839e73e6dafc2fc84983496bc" + integrity sha512-R0VgsMtXzPVpvSYuRAG8ibZucfRCBWhUBWjBhqT8c/l9ykHdY9MMzOHF9XHxmecKe3hMBWoWVqv4oSQZxbe8Lw== -"@next/swc-darwin-x64@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.3.tgz#f70ce07016501c6f823035bc67296b8f80201145" - integrity sha512-lve+lnTiddXbcT3Lh2ujOFywQSEycTYQhuf6j6JrPu9oLQGS01kjIqqSj3/KMmSoppEnXo3BxkgYu+g2+ecHkA== +"@next/swc-darwin-x64@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.4-canary.0.tgz#daaab3aadfb3f38d205b690ceb448a984fce4b4b" + integrity sha512-6ngYY1zdcbvDzCDCnxWf3bYxC4Wh8q4YN2t6v6cR3PTZlmQd8RjiHNw1/BoJVpe+0A1mnccpUrncjIIS6pLtKQ== -"@next/swc-freebsd-x64@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.3.tgz#ccc6fa4588dadec85458091aa19c17bc3e99a10d" - integrity sha512-V4bZU1qBFkULTPW53phY8ypioh3EERzHu9YKAasm9RxU4dj+8c/4s60y+kbFkFEEpIUgEU6yNuYZRR4lHHbUGA== +"@next/swc-freebsd-x64@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.4-canary.0.tgz#6cae737666cffe97d4f4783fa1bb46e13de3547b" + integrity sha512-sUY8FKKbuogkCwhBOHtu+kfu05CZE3dBdCmXTI0NNUTiDcMtjU6hUZxKL6DsN2qQlvMhU4f2Jg4az9N0EBMdwQ== -"@next/swc-linux-arm-gnueabihf@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.3.tgz#d7a481d3ede14dee85707d0807b4a05cd2300950" - integrity sha512-MWxS/i+XSEKdQE0ZmdYkPPrWKBi4JwMVaXdOW9J/T/sZJsHsLlSC9ErBcNolKAJEVka+tnw9oPRyRCKOj+q0sw== +"@next/swc-linux-arm-gnueabihf@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.4-canary.0.tgz#6beb07063f96ac2fee1100ab9e997e522d58073b" + integrity sha512-v6GW8SgXjsgIWZ5Ftgy0l4obMfLvGIyFxNiiDXf1AX648rPODn8bMdvui5yZ1P3Kxi+fy80AJUNqBcipqSGGOQ== -"@next/swc-linux-arm64-gnu@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.3.tgz#6d105c971cc0957c25563aa98af475291b4cd8aa" - integrity sha512-ikXkqAmvEcWTzIQFDdmrUHLWzdDAF5s2pVsSpQn9rk/gK1i9webH1GRQd2bSM7JLuPBZSaYrNGvDTyHZdSEYlg== +"@next/swc-linux-arm64-gnu@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.4-canary.0.tgz#aa86098d51752e4cb660e8477e461bf407066b32" + integrity sha512-uubV2e9H9KEfOJBU0PDyKICAdd/x1j5wKQT0PKW8sumIZc8TCD461zVlhxeUl//MW8rva8khdW8C5rR4SvufYw== -"@next/swc-linux-arm64-musl@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.3.tgz#bebfe490130e3cb8746a03d35a5a9e23ac0e6f9b" - integrity sha512-wE45gGFkeLLLnCoveKaBrdpYkkypl3qwNF2YhnfvfVK7etuu1O679LwClhCWinDVBr+KOkmyHok00Z+0uI1ycg== +"@next/swc-linux-arm64-musl@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.4-canary.0.tgz#104cef9ce03bd4d151d6fe593a101d37f53279b1" + integrity sha512-Xmzk84wt6Gb/QhHkuM+UH01cGvok+s857KLgfIEPlsb9iDLPlLP7b8YgW9YAgLeuFiTXP2oMPE0UTJmsutrYHA== -"@next/swc-linux-x64-gnu@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.3.tgz#84a3d99f9d656fbc139f3a19f9b1baf73877d18f" - integrity sha512-MbFI6413VSXiREzHwYD8YAJLTknBaC+bmjXgdHEEdloeOuBFQGE3NWn3izOCTy8kV+s98VDQO8au7EKKs+bW0g== +"@next/swc-linux-x64-gnu@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.4-canary.0.tgz#b0db7f64a5985259a4af0150ccdb3d1c04c2c2f6" + integrity sha512-9p49baiVEYsPg+h2VdG+tPdNrTRS75igq4SpvwEepzdtMOoz/xQQCdR0I2/g7nau/mdRSNIxkk0diH6oBTm8GA== -"@next/swc-linux-x64-musl@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.3.tgz#a283431f8c6c830b4bd61147094f150ea7deeb6e" - integrity sha512-jMBD0Va6fInbPih/dNySlNY2RpjkK6MXS+UGVEvuTswl1MZr+iahvurmshwGKpjaRwVU4DSFMD8+gfWxsTFs1Q== +"@next/swc-linux-x64-musl@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.4-canary.0.tgz#7f72da3c2b45c7c1ec371802700664a664422908" + integrity sha512-xqtPxoPOKjkcFnRMGnEGQ3GeMeoMTkIJW/e4B9ykc4ztTERbDUarpiyIkVN4KAIgWp0xw/tFI2Pfp+YMrtr6Mw== -"@next/swc-win32-arm64-msvc@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.3.tgz#bab9ba8736d81db128badb70024268469eaa9b34" - integrity sha512-Cq8ToPdc0jQP2C7pjChYctAsEe7+lO/B826ZCK5xFzobuHPiCyJ2Mzx/nEQwCY4SpYkeJQtCbwlCz5iyGW5zGg== +"@next/swc-win32-arm64-msvc@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.4-canary.0.tgz#f788f8f8abf33df13c3a9b7c2281d3f048c266eb" + integrity sha512-CMZVGVIg8pxMOL3vL3Q+XXBh/KHYex9szUV5R3gm/En18UYeMy9IKd25sfALcM2DZq5njzayvl9D4QaefuFBjg== -"@next/swc-win32-ia32-msvc@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.3.tgz#feea6ada1ba3e897f39ded9f2de5006f4e1c928b" - integrity sha512-BtFq4c8IpeB0sDhJMHJFgm86rPkOvmYI8k3De8Y2kgNVWSeLQ0Q929PWf7e+GqcX1015ei/gEB41ZH8Iw49NzA== +"@next/swc-win32-ia32-msvc@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.4-canary.0.tgz#32cc19b0efbc45105ff71446cee0ceba07e13a2a" + integrity sha512-Mw+3EGplU+OcH0XkDf06G0ombBVvfGpQkQ1WfhjA3v6iBn9bZDF2Qdv2puZWZJWhqMQtJBLi4LkzOb8muYM+jQ== -"@next/swc-win32-x64-msvc@12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.3.tgz#403e1575a84c31cbd7f3c0ecd51b61bc25b7f808" - integrity sha512-huSNb98KSG77Kl96CoPgCwom28aamuUsPpRmn/4s9L0RNbbHVSkp9E6HA4yOAykZCEuWcdNsRLbVVuAbt8rtIw== +"@next/swc-win32-x64-msvc@12.2.4-canary.0": + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.4-canary.0.tgz#749eab5212e203eab166ae55500569bf8e4dee5c" + integrity sha512-Kj3qQMFqYl6G+/7g1nc2ktFYQlTU5RglMsa9s0DbP7cvTqYQjHF4eWE+UW2Bi9d7G+wx9XfXM3Oh0u886mUMvA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1585,11 +1585,6 @@ dependencies: "@types/unist" "*" -"@types/js-cookie@^2.2.6": - version "2.2.7" - resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" - integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== - "@types/js-yaml@^4.0.0": version "4.0.5" resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" @@ -1640,9 +1635,9 @@ "@types/unist" "*" "@types/node@*": - version "18.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.0.tgz#3ad8c5a4e8e11abc51a11894355f2ba58de9f1a1" - integrity sha512-WZ/6I1GL0DNAo4bb01lGGKTHH8BHJyECepf11kWONg3OJoHq2WYOm16Es1V54Er7NTUXsbDCpKRKdmBc4X2xhA== + version "18.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.1.tgz#828e4785ccca13f44e2fb6852ae0ef11e3e20ba5" + integrity sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg== "@types/node@^17.0.5": version "17.0.45" @@ -1811,11 +1806,6 @@ "@typescript-eslint/types" "5.30.7" eslint-visitor-keys "^3.3.0" -"@xobotyi/scrollbar-width@^1.9.5": - version "1.9.5" - resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d" - integrity sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ== - acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -2236,22 +2226,22 @@ copy-to-clipboard@^3.3.1: toggle-selection "^1.0.6" core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.23.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.5.tgz#11edce2f1c4f69a96d30ce77c805ce118909cd5b" - integrity sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg== + version "3.24.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.24.0.tgz#885958fac38bf3f4464a90f2663b4620f6aee6e3" + integrity sha512-F+2E63X3ff/nj8uIrf8Rf24UDGIz7p838+xjEp+Bx3y8OWXj+VTPPZNCtdqovPaS9o7Tka5mCH01Zn5vOd6UQg== dependencies: browserslist "^4.21.2" semver "7.0.0" core-js-pure@^3.20.2: - version "3.23.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.5.tgz#23daaa9af9230e50f10b0fa4b8e6b87402be4c33" - integrity sha512-8t78LdpKSuCq4pJYCYk8hl7XEkAX+BP16yRIwL3AanTksxuEf7CM83vRyctmiEL8NDZ3jpUcv56fk9/zG3aIuw== + version "3.24.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.24.0.tgz#10eeb90dbf0d670a6b22b081aecc7deb2faec7e1" + integrity sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA== core-js@^3.1.3: - version "3.23.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.23.5.tgz#1f82b0de5eece800827a2f59d597509c67650475" - integrity sha512-7Vh11tujtAZy82da4duVreQysIoO2EvVrur7y6IzZkH1IHPSekuDi8Vuw1+YKjkbfWLRD7Nc9ICQ/sIUDutcyg== + version "3.24.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.0.tgz#4928d4e99c593a234eb1a1f9abd3122b04d3ac57" + integrity sha512-IeOyT8A6iK37Ep4kZDD423mpi6JfPRoPUdQwEWYiGolvn4o6j2diaRzNfDfpTdu3a5qMbrGUzKUpYpRY8jXCkQ== cosmiconfig@^7.0.1: version "7.0.1" @@ -2280,14 +2270,6 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -css-in-js-utils@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" - integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== - dependencies: - hyphenate-style-name "^1.0.2" - isobject "^3.0.1" - css-select@^4.1.3: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" @@ -2319,7 +2301,7 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -csstype@^3.0.2, csstype@^3.0.6: +csstype@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== @@ -2493,13 +2475,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.6: - version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" - integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== - dependencies: - stackframe "^1.3.4" - es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: version "1.20.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" @@ -2565,12 +2540,12 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-next@12.2.3: - version "12.2.3" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.2.3.tgz#468fe9756ccbf7e4452139062db5b4e6557dc885" - integrity sha512-xAQqAqwa2bu9ZMRypz58ym4tNCo22Wc6LuoLpbpf3yW5c4ZkVib9934AgGDDvh2zKrP56Z6X0Pp6gNnuuZzcRw== +eslint-config-next@12.2.4-canary.0: + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.2.4-canary.0.tgz#a838ee32b35a393b6a7659a7e057780be85bdad1" + integrity sha512-LiL1e74UAjOxk+zj0k1ek6s7sBe/4h2+yOCssU4ANjB0q4ILyg81Q/Kyt/gZSY5REJS2H2sq0gGqXqVqr1lRmA== dependencies: - "@next/eslint-plugin-next" "12.2.3" + "@next/eslint-plugin-next" "12.2.4-canary.0" "@rushstack/eslint-patch" "^1.1.3" "@typescript-eslint/parser" "^5.21.0" eslint-import-resolver-node "^0.3.6" @@ -2891,16 +2866,6 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-shallow-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" - integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== - -fastest-stable-stringify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-2.0.2.tgz#3757a6774f6ec8de40c4e86ec28ea02417214c76" - integrity sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q== - fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -3276,11 +3241,6 @@ human-signals@^3.0.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== -hyphenate-style-name@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" - integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== - ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" @@ -3327,13 +3287,6 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -inline-style-prefixer@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" - integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== - dependencies: - css-in-js-utils "^2.0.0" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -3517,16 +3470,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -js-cookie@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" - integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4386,20 +4329,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -nano-css@^5.3.1: - version "5.3.5" - resolved "https://registry.yarnpkg.com/nano-css/-/nano-css-5.3.5.tgz#3075ea29ffdeb0c7cb6d25edb21d8f7fa8e8fe8e" - integrity sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg== - dependencies: - css-tree "^1.1.2" - csstype "^3.0.6" - fastest-stable-stringify "^2.0.2" - inline-style-prefixer "^6.0.0" - rtl-css-js "^1.14.0" - sourcemap-codec "^1.4.8" - stacktrace-js "^2.0.2" - stylis "^4.0.6" - nanoid@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" @@ -4425,31 +4354,31 @@ next-seo@^5.5.0: resolved "https://registry.yarnpkg.com/next-seo/-/next-seo-5.5.0.tgz#12bdfce60a6ae098f49617357a166c2d44dbc29e" integrity sha512-5ouBHFtx8YrSDW44lj0qIEQ+oMcz6stgoITB+SqHUZbhgizoJsyLmq73gJ0lxtEKpcN8vG2QgRIJfdb8OAPChw== -next@12.2.3: - version "12.2.3" - resolved "https://registry.yarnpkg.com/next/-/next-12.2.3.tgz#c29d235ce480e589894dfab3120dade25d015a22" - integrity sha512-TA0tmSA6Dk6S6kfvCNbF7CWYW8468gZUxr/3/30z4KvAQbXnl2ASYZElVe7q/hBW/1F1ee0tSBlHa4/sn+ZIBw== +next@12.2.4-canary.0: + version "12.2.4-canary.0" + resolved "https://registry.yarnpkg.com/next/-/next-12.2.4-canary.0.tgz#d91b67145d739730011b0018857616125e20d8d9" + integrity sha512-AHdKHr48B4K/1O1iz9Bvms/m92oDdGzE062K53MNApPZu/56Ow5jK2FxvDXxFW0a0OHATc/Dbqnc42s28Iv7Cw== dependencies: - "@next/env" "12.2.3" + "@next/env" "12.2.4-canary.0" "@swc/helpers" "0.4.3" caniuse-lite "^1.0.30001332" postcss "8.4.14" styled-jsx "5.0.2" use-sync-external-store "1.2.0" optionalDependencies: - "@next/swc-android-arm-eabi" "12.2.3" - "@next/swc-android-arm64" "12.2.3" - "@next/swc-darwin-arm64" "12.2.3" - "@next/swc-darwin-x64" "12.2.3" - "@next/swc-freebsd-x64" "12.2.3" - "@next/swc-linux-arm-gnueabihf" "12.2.3" - "@next/swc-linux-arm64-gnu" "12.2.3" - "@next/swc-linux-arm64-musl" "12.2.3" - "@next/swc-linux-x64-gnu" "12.2.3" - "@next/swc-linux-x64-musl" "12.2.3" - "@next/swc-win32-arm64-msvc" "12.2.3" - "@next/swc-win32-ia32-msvc" "12.2.3" - "@next/swc-win32-x64-msvc" "12.2.3" + "@next/swc-android-arm-eabi" "12.2.4-canary.0" + "@next/swc-android-arm64" "12.2.4-canary.0" + "@next/swc-darwin-arm64" "12.2.4-canary.0" + "@next/swc-darwin-x64" "12.2.4-canary.0" + "@next/swc-freebsd-x64" "12.2.4-canary.0" + "@next/swc-linux-arm-gnueabihf" "12.2.4-canary.0" + "@next/swc-linux-arm64-gnu" "12.2.4-canary.0" + "@next/swc-linux-arm64-musl" "12.2.4-canary.0" + "@next/swc-linux-x64-gnu" "12.2.4-canary.0" + "@next/swc-linux-x64-musl" "12.2.4-canary.0" + "@next/swc-win32-arm64-msvc" "12.2.4-canary.0" + "@next/swc-win32-ia32-msvc" "12.2.4-canary.0" + "@next/swc-win32-x64-msvc" "12.2.4-canary.0" nlcst-to-string@^2.0.0: version "2.0.4" @@ -4874,31 +4803,6 @@ react-twitter-embed@^4.0.4: dependencies: scriptjs "^2.5.9" -react-universal-interface@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/react-universal-interface/-/react-universal-interface-0.6.2.tgz#5e8d438a01729a4dbbcbeeceb0b86be146fe2b3b" - integrity sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw== - -react-use@^17.4.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.4.0.tgz#cefef258b0a6c534a5c8021c2528ac6e1a4cdc6d" - integrity sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q== - dependencies: - "@types/js-cookie" "^2.2.6" - "@xobotyi/scrollbar-width" "^1.9.5" - copy-to-clipboard "^3.3.1" - fast-deep-equal "^3.1.3" - fast-shallow-equal "^1.0.0" - js-cookie "^2.2.1" - nano-css "^5.3.1" - react-universal-interface "^0.6.2" - resize-observer-polyfill "^1.5.1" - screenfull "^5.1.0" - set-harmonic-interval "^1.0.1" - throttle-debounce "^3.0.1" - ts-easing "^0.2.0" - tslib "^2.1.0" - react@18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -5074,11 +4978,6 @@ remove-markdown@^0.5.0: resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.5.0.tgz#a596264bbd60b9ceab2e2ae86e5789eee91aee32" integrity sha512-x917M80K97K5IN1L8lUvFehsfhR8cYjGQ/yAMRI9E7JIKivtl5Emo5iD13DhMr+VojzMCiYk8V2byNPwT/oapg== -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -5166,13 +5065,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rtl-css-js@^1.14.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.15.0.tgz#680ed816e570a9ebccba9e1cd0f202c6a8bb2dc0" - integrity sha512-99Cu4wNNIhrI10xxUaABHsdDqzalrSRTie4GeCmbGVuehm4oj+fIy8fTzB+16pmKe8Bv9rl+hxIBez6KxExTew== - dependencies: - "@babel/runtime" "^7.1.2" - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -5211,11 +5103,6 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -screenfull@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.2.0.tgz#6533d524d30621fc1283b9692146f3f13a93d1ba" - integrity sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA== - scriptjs@^2.5.9: version "2.5.9" resolved "https://registry.yarnpkg.com/scriptjs/-/scriptjs-2.5.9.tgz#343915cd2ec2ed9bfdde2b9875cd28f59394b35f" @@ -5246,11 +5133,6 @@ semver@^7.3.7: dependencies: lru-cache "^6.0.0" -set-harmonic-interval@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz#e1773705539cdfb80ce1c3d99e7f298bb3995249" - integrity sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g== - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -5333,21 +5215,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== - source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - space-separated-tokens@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" @@ -5368,35 +5240,6 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stack-generator@^2.0.5: - version "2.0.10" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" - integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== - dependencies: - stackframe "^1.3.4" - -stackframe@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" - integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== - -stacktrace-gps@^3.0.4: - version "3.1.2" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0" - integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ== - dependencies: - source-map "0.5.6" - stackframe "^1.3.4" - -stacktrace-js@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" - integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== - dependencies: - error-stack-parser "^2.0.6" - stack-generator "^2.0.5" - stacktrace-gps "^3.0.4" - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -5511,11 +5354,6 @@ styled-jsx@5.0.2: resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== -stylis@^4.0.6: - version "4.1.1" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.1.tgz#e46c6a9bbf7c58db1e65bb730be157311ae1fe12" - integrity sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ== - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -5563,11 +5401,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -throttle-debounce@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb" - integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== - through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -5610,11 +5443,6 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== -ts-easing@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec" - integrity sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ== - tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"