diff --git a/contexts/ThemeContext.tsx b/contexts/ThemeContext.tsx index 44f2c92b..b18d77e8 100644 --- a/contexts/ThemeContext.tsx +++ b/contexts/ThemeContext.tsx @@ -29,7 +29,7 @@ export const ThemeProvider = ({ }; }>) => { // keep track of if/when the user has set their theme *on this site* - const [preferredTheme, setPreferredTheme] = useLocalStorage(themeStorageKey); + const [preferredTheme, setPreferredTheme] = useLocalStorage(themeStorageKey); // keep track of changes to the user's OS/browser dark mode setting const [systemTheme, setSystemTheme] = useState(""); // hook into system `prefers-dark-mode` setting diff --git a/hooks/useLocalStorage.ts b/hooks/useLocalStorage.ts index 8aac55d7..78320591 100644 --- a/hooks/useLocalStorage.ts +++ b/hooks/useLocalStorage.ts @@ -1,32 +1,37 @@ // Modified from https://github.com/streamich/react-use/blob/e53ca94a0b1f20270b0f75dc2ca1fecf1e119dde/src/useLocalStorage.ts -import { useCallback, useState, useRef, useLayoutEffect } from "react"; +import { useCallback, useState, useRef } from "react"; import type { Dispatch, SetStateAction } from "react"; // eslint-disable-next-line @typescript-eslint/no-empty-function const noop = () => {}; -const useLocalStorage = ( +const useLocalStorage = ( key: string, initialValue?: T -): [T | undefined, Dispatch>, typeof noop] => { +): [T | undefined, Dispatch>, () => void] => { if (typeof window === "undefined" || typeof window.Storage === "undefined") { + // immediately return a "dummy" hook instead of throwing an error if localStorage isn't available, either in the + // browser or because this hook is being called server-side. return [initialValue as T, noop, noop]; } - // TODO: make these customizable: - const serializer = String; - const deserializer = (value: any) => value; // eslint-disable-line @typescript-eslint/no-explicit-any + // TODO: make these customizable (e.g. `JSON.stringify()` and `JSON.parse()`) + const serializer = (value: T | undefined) => String(value); + const deserializer = (value: string) => value as unknown as T; // eslint-disable-next-line react-hooks/rules-of-hooks const initializer = useRef((key: string) => { try { - const localStorageValue = window.localStorage.getItem(key); + // deserialize and return existing value if it's already been set + const storedValue = window.localStorage.getItem(key); + if (storedValue !== null) { + return deserializer(storedValue); + } - if (localStorageValue !== null) { - return deserializer(localStorageValue); - } else { - initialValue && window.localStorage.setItem(key, serializer(initialValue)); + // item hasn't been set, but immediately set it to initialValue if provided + if (initialValue) { + window.localStorage.setItem(key, serializer(initialValue)); return initialValue; } } catch (error) { @@ -37,26 +42,20 @@ const useLocalStorage = ( // 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 { + // we need to support both T and (prevState: T) => T const newState = valOrFunc instanceof Function ? valOrFunc(state) : valOrFunc; - if (typeof newState === "undefined") { - return; - } - - const value = typeof newState === "string" ? newState : JSON.stringify(newState); - - window.localStorage.setItem(key, value); - setState(deserializer(value)); - } catch (error) {} // eslint-disable-line no-empty + window.localStorage.setItem(key, serializer(newState)); + setState(newState); + } catch (error) { + console.error(`failed to set localStorage item '${key}':`, error); + } }, - [key, setState] // eslint-disable-line react-hooks/exhaustive-deps + [key, state] // eslint-disable-line react-hooks/exhaustive-deps ); // eslint-disable-next-line react-hooks/rules-of-hooks @@ -65,7 +64,7 @@ const useLocalStorage = ( window.localStorage.removeItem(key); setState(undefined); } catch (error) {} // eslint-disable-line no-empty - }, [key, setState]); + }, [key]); return [state, set, remove]; }; diff --git a/package.json b/package.json index 8ca8a5d4..9a95fe8f 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "@primer/octicons": "^17.3.0", "@prisma/client": "^4.1.0", "@react-spring/web": "^9.5.2", - "@sentry/node": "^7.7.0", - "@sentry/tracing": "^7.7.0", + "@sentry/node": "^7.8.0", + "@sentry/tracing": "^7.8.0", "@stitches/react": "^1.2.8", "comma-number": "^2.1.0", "copy-to-clipboard": "^3.3.1", @@ -42,7 +42,7 @@ "gray-matter": "^4.0.3", "hex-to-rgba": "^2.0.1", "marked": "^4.0.18", - "next": "12.2.4-canary.1", + "next": "12.2.4-canary.2", "next-mdx-remote": "^4.1.0", "next-seo": "^5.5.0", "p-map": "^5.5.0", @@ -86,7 +86,7 @@ "@typescript-eslint/parser": "^5.31.0", "cross-env": "^7.0.3", "eslint": "~8.20.0", - "eslint-config-next": "12.2.4-canary.1", + "eslint-config-next": "12.2.4-canary.2", "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 b4747b61..f07cd59d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1127,82 +1127,82 @@ "@types/mdx" "^2.0.0" "@types/react" ">=16" -"@next/env@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.4-canary.1.tgz#f026986197d171e53162b3547478ff61730d35e7" - integrity sha512-D5ax0pgf6mYrxyLsId03knyTHsK61Q4FlPqw5iPEBidaSYHpNRN2uR4h+kjFm2KpCVJR9ToGCGlDdQpLU5VriQ== +"@next/env@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.4-canary.2.tgz#4ce542bb9df632d443866329a081efbb920add59" + integrity sha512-CNlaln7PuRoh0ikxu/M+vqjTOWPcZwFsFTwUjLGgQdgP4qHbtn3Tn7Lg8jeuG4nD5t+4loSyHwH49VWfN2ixiQ== -"@next/eslint-plugin-next@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.2.4-canary.1.tgz#5f7ae565cd7230566dcfe0095e66073f3f801e19" - integrity sha512-8PUf5UVEuXG3TBAqoCR6SDOCaiNMq4oy0NEpPoFtZvzyL/5W2ydhXfj9RVjAb9QuFo0sLRIKglZHJDxuBE4G8w== +"@next/eslint-plugin-next@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.2.4-canary.2.tgz#90d7401dc1ad46ec728616eb0eaebaa4a573d658" + integrity sha512-ShnBuOMwq5s73T0cU8bJ7VYa0Y0qF+uULvFcqetS7U2nMUhZboW7yrMqAZ0uP2MVFJqv73Qh+LKWKUBT3OtZ4w== dependencies: glob "7.1.7" -"@next/swc-android-arm-eabi@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.4-canary.1.tgz#9c8d531b07df15b9b902d5a9de917a156caa7fbd" - integrity sha512-5vJ9oCO6XNfQmNH8G/Sz2LM84CNA/U+OVpMH9tKZBlhQrZiLAlljuI2A+pWV54Nofq1MMPmNq6Ve/6VyeORnHQ== +"@next/swc-android-arm-eabi@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.4-canary.2.tgz#3330ba94a0558d9959344726ad3d18235dbbe61a" + integrity sha512-9Ac17m3Kc2NX7od774bE2zKjDDX435aliPUdYFiwgNTX4mMoVGH+s9kzbPBEwQjJF+Cgs3h7kJpNrjbA3LxDlQ== -"@next/swc-android-arm64@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.4-canary.1.tgz#d6c2f2730d2d9344a2e929a801f76dde12f09afb" - integrity sha512-GzR6uE4KCSOXt9fOD1dHgQh1+zjvVhYnjxZDetAHpqENYbtho5aSpiZgnh7DYHjNJKECvx/pscB6s50VCzWkqA== +"@next/swc-android-arm64@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.4-canary.2.tgz#762bafda2ded5272743a84512e8f5569a20d4818" + integrity sha512-D7S5hXWoLXPkSjKh7OWRK3ygpc9K5VOi4vAnoGUHDryO2CLXIMDbylGjZ/KEPWL4bpwFYXl+58CA3zTBvPqNvQ== -"@next/swc-darwin-arm64@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.4-canary.1.tgz#a71b3cd18eda7b9791892a90c8d16302dc5409b0" - integrity sha512-p4ZpF3+6rrHwT2XXSm7RN1cctChOQmKrqrkexkIXiptROFJFtE9L02M5ITbWKqrQ9M4RxS6FtzpTLRtMrr0gwQ== +"@next/swc-darwin-arm64@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.4-canary.2.tgz#30c78d7bd30f759e61e62fb3a1c22ef1531f2f0c" + integrity sha512-Bx6EKRNwwWoSnAUPDzpL4euEUoFG1heONxYNnyJzwp2kRWsSwUoYkkeGrWxSURs8Ksy6ALQ3R8Pv5tKWhuBzzg== -"@next/swc-darwin-x64@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.4-canary.1.tgz#1c57019737ae8303861d5eb822a47da05575b9f3" - integrity sha512-w+WsxgtNatsKluOQaRzVdQ2slrGJz6lu3pdAVIG8p+ZWxFdVpdXXOI1WaIQVq8KhnA9gLKmDb/+5nWefedsoQQ== +"@next/swc-darwin-x64@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.4-canary.2.tgz#d1d56d46471d11b0ab9f1c37e36a8be471ca4b43" + integrity sha512-uhxRWHGPyuBds0I0jYIP9Mi4AMU/RrmKC7dkqgtkoVUD3RmAtVOQzn3CFQDb4srX9ElVSWhgFIa82IuwiU9qKQ== -"@next/swc-freebsd-x64@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.4-canary.1.tgz#6498713468559edca2e46b5fdcbe0addf8e802af" - integrity sha512-GJsm0e1q2DTOFwWHr33ZBcT5XjuQGF47F9tjKwnKEb/C6snBLesurgyXUGQHzqmMaNib3F/amYwj4mTPLogn/Q== +"@next/swc-freebsd-x64@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.4-canary.2.tgz#be59a63d3eb945c2e58d340d56bba2d9da042874" + integrity sha512-NCE+VKyhr+bUWyI7o1jqEgCkJxykbIWnx6f+/i9I9ktpi6voWmXSbXqBMialFEKFlPLhYg/ThJ1hOLkbXWgBcw== -"@next/swc-linux-arm-gnueabihf@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.4-canary.1.tgz#882df03e15bb2f7aa6eb1029f795dbdf713f86b0" - integrity sha512-JpqDgxj/m/sOIO8nJ1qYmcw1dhNzlYZUOBI9ko9OEQfR3nJ6ZB78D12f2RqpZ3f0W8VrpDwwChMmQvjzoYWqWA== +"@next/swc-linux-arm-gnueabihf@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.4-canary.2.tgz#bf95f9f6abd2b1613af33e9997587c3444558674" + integrity sha512-FRJhBzVav3iYpeEdOTlXDpiYvueaQWSbakCDSMbYd8yVcWuw4tslcxKOcJlx16qKswJX/GZuk0t8XP9JCV/Pmw== -"@next/swc-linux-arm64-gnu@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.4-canary.1.tgz#018501d27080f719b896e3bb1cf7d6c129ed6b79" - integrity sha512-2p+3by9+F3vPZ6rC1ShzTvnyU2bL1u89JGIiJIt42dVxOG2xpmv9YuoMV8xGqHVB8jXsk15NNPNXxX7gvsZIiQ== +"@next/swc-linux-arm64-gnu@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.4-canary.2.tgz#0a9a548f1a93b9c4b796921879c235234834ae45" + integrity sha512-D5xZ619ejiv6kJxm6fpJNOrNuXeeMxXQl81VQjOPV4Z2nKDVRN0OAWzW5OFG4xh2aDe0Z2LadlRMJMRQ/V2FYw== -"@next/swc-linux-arm64-musl@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.4-canary.1.tgz#8001616b805c035e9650456fbd0f5137726e51fb" - integrity sha512-zuv08vgsQa7uaIwtLx9I9gFhfyDEAhcy2M790IjBUCXBWZshdibKW/q7C2NUTzAAvrwm8HzHV8sKb8ax3XNH0g== +"@next/swc-linux-arm64-musl@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.4-canary.2.tgz#87fd31119919fdf334af48c02a19d2c5cc4d8eae" + integrity sha512-/nTG0v7CzNZlpKgVkYFha2Le9GGT73pyzsqUWE+P7PGf/5CO4/BHwhaW8ey5WLqTGdx+Nlm0048XDOtUhXF3bg== -"@next/swc-linux-x64-gnu@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.4-canary.1.tgz#ebda42974a3eff7299020a2daa47d8a35e59ef24" - integrity sha512-ROJKD06tmILZRbkih6VNJclV9TzmS16VaM9g7LsT7e8Ew6cadIUpOMCBFhQNgrxMqZ9bEqGFaPr/UgwCvoj5aA== +"@next/swc-linux-x64-gnu@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.4-canary.2.tgz#d2cfd139603d4d82efbdba5255e6870ec4ab4662" + integrity sha512-weylA2Y+feOSpq+oPAvxONlOgcMmpBqP98suwfl/U6S/ahQGpHizOj7/hylMSRMLj8vhCTcFn5GJcBIJHHmSGw== -"@next/swc-linux-x64-musl@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.4-canary.1.tgz#67e28aa1732c1a896f5c465bcda789dba5363f91" - integrity sha512-XuzQ0ol6zZIy+PMml+0bP9DNTZj9Z5NcNCnqRl36qSy+C13ssVC3BRMoR9cGqt+cSUjFX43f6IlUutP0uIF8YA== +"@next/swc-linux-x64-musl@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.4-canary.2.tgz#dc773606deacf6961aaf75ac7477a14ae07509fa" + integrity sha512-hBoa82xIb/mei4H7h6LqyVDXUrb0SoWzfOGmRKQRdDGzjE9BkHReX7OLw2CIlXx6mSnpZ/wmYQ6BpRAyYcmm+w== -"@next/swc-win32-arm64-msvc@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.4-canary.1.tgz#ff8bfd63df30af48d3c2963cb27a1698e52bacf8" - integrity sha512-Qr5SzmYDgpYNFmJzX01wc3XYKc8RVksY6ofA1Xkg5xZzxxAI6nYYqtZSgauj1nx9YVaHzHkNqWMuzkHU93wjig== +"@next/swc-win32-arm64-msvc@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.4-canary.2.tgz#7944e293f0f816110a34862c038d1c1f67cbe108" + integrity sha512-FC4k2BKRY/Kr/VgAfzQX81DGVQCnLm9SkqfWOiQTVYquPx5Se7df2aOH8soe/ZQLx+zdOHNo9opzBZZib3PrPA== -"@next/swc-win32-ia32-msvc@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.4-canary.1.tgz#b2e196cbb28fe6682724edcc8be46ded60671b2b" - integrity sha512-TIf4gl5Tve/PbqTZbNHE7FyvXCBEp9hEmcUxP4nX1YhNGiKO5CbdWXAOPFaZ8Hwd59NJDYBRREfWJ+EDFAH57Q== +"@next/swc-win32-ia32-msvc@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.4-canary.2.tgz#73e1cbbd167dfc31d1a1b53686a41abe3a095277" + integrity sha512-mPwxmx8OxHYSiR4StED3dO7k1m+Vu/Oxs4/mNOqNs/gFAaGl82WmKk/njUvYIsnWrDoKX5CgibV684J5bCchVw== -"@next/swc-win32-x64-msvc@12.2.4-canary.1": - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.4-canary.1.tgz#05b542169ddbb9fc822f138e3c175e172aee33a6" - integrity sha512-hsBZ+Z5YIJdxfX5zApbv49xffLX1wRdT1ReKIhQZMZY2v9L07MEV+GjPX+iE7B9XWHK2d2Y95AjAplH6vE3kGQ== +"@next/swc-win32-x64-msvc@12.2.4-canary.2": + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.4-canary.2.tgz#de9e3c232c3ac6cee9786c2ee53747785efd1ca5" + integrity sha512-dYEMAVCI38b4kVuvV8yhoc92SSm4tWcU8i9aDlfRCB7jUvHBfF5YSbDd3CI9MCiAc2314JVu6X5EdoQa/VwXZw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1255,10 +1255,10 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^12.10.0": - version "12.10.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.10.1.tgz#57b5cc6c7b4e55d8642c93d06401fb1af4839899" - integrity sha512-P+SukKanjFY0ZhsK6wSVnQmxTP2eVPPE8OPSNuxaMYtgVzwJZgfGdwlYjf4RlRU4vLEw4ts2fsE2icG4nZ5ddQ== +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== "@octokit/request-error@^3.0.0": version "3.0.0" @@ -1282,11 +1282,11 @@ universal-user-agent "^6.0.0" "@octokit/types@^6.0.3", "@octokit/types@^6.16.1": - version "6.40.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.40.0.tgz#f2e665196d419e19bb4265603cf904a820505d0e" - integrity sha512-MFZOU5r8SwgJWDMhrLUSvyJPtVsqA6VnbVI3TNbsmw+Jnvrktzvq2fYES/6RiJA/5Ykdwq4mJmtlYUfW7CGjmw== + version "6.41.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== dependencies: - "@octokit/openapi-types" "^12.10.0" + "@octokit/openapi-types" "^12.11.0" "@primer/octicons@^17.3.0": version "17.3.0" @@ -1363,60 +1363,60 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz#0c8b74c50f29ee44f423f7416829c0bf8bb5eb27" integrity sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA== -"@sentry/core@7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.7.0.tgz#1a2d477897552d179380f7c54c7d81a4e98ea29a" - integrity sha512-Z15ACiuiFINFcK4gbMrnejLn4AVjKBPJOWKrrmpIe8mh+Y9diOuswt5mMUABs+jhpZvqht3PBLLGBL0WMsYMYA== +"@sentry/core@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.8.0.tgz#3ab3a4cb4389527e3ca08031a02f010ec52287e8" + integrity sha512-Xogwy96P6o3qgSLIGHxzKnRxrky8QdHpnS4A6ZWjnnFFAJmMg3MPF9SmqK5dOUpO9K69jTad9vs6ES2qTydfIw== dependencies: - "@sentry/hub" "7.7.0" - "@sentry/types" "7.7.0" - "@sentry/utils" "7.7.0" + "@sentry/hub" "7.8.0" + "@sentry/types" "7.8.0" + "@sentry/utils" "7.8.0" tslib "^1.9.3" -"@sentry/hub@7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.7.0.tgz#9ad3471cf5ecaf1a9d3a3a04ca2515ffec9e2c09" - integrity sha512-6gydK234+a0nKhBRDdIJ7Dp42CaiW2juTiHegUVDq+482balVzbZyEAmESCmuzKJhx5BhlCElVxs/cci1NjMpg== +"@sentry/hub@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.8.0.tgz#ba261fff11f389511b2a2f7ccd4466dc781d1a8d" + integrity sha512-L+aZ7XQJ5cM9NFBy/4caTyBVOc5DB6LK1wxPSFxCy1zsr/XpEYqTAy6ATRUeC0UKxdd/sN/lnQ8liGwVAc0gGQ== dependencies: - "@sentry/types" "7.7.0" - "@sentry/utils" "7.7.0" + "@sentry/types" "7.8.0" + "@sentry/utils" "7.8.0" tslib "^1.9.3" -"@sentry/node@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.7.0.tgz#d39e904968fcca8cb0a881dee81887a6abf3ad74" - integrity sha512-i62x23NHEhLe6CJ6l9E30uRCUMm0VMz9aUmmrjW+9uxS1mZhHTG2kpbU16ozyh9KTLswKDOSE75Z+MzQpGSQ/Q== +"@sentry/node@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.8.0.tgz#7b5f183d8717c5d106bf98936dcce3fa34a515f0" + integrity sha512-nnHeKVbOWlNC/ekgKJhSPDOJbw2W/Bk5OTRmJJm2TgrRS/RituogLjf9Ypw/oZOT4MWQHpn2qTI6yXta5WIQuw== dependencies: - "@sentry/core" "7.7.0" - "@sentry/hub" "7.7.0" - "@sentry/types" "7.7.0" - "@sentry/utils" "7.7.0" + "@sentry/core" "7.8.0" + "@sentry/hub" "7.8.0" + "@sentry/types" "7.8.0" + "@sentry/utils" "7.8.0" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/tracing@^7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.7.0.tgz#67324b755a28e115289755e44a0b8b467a63d0b2" - integrity sha512-HNmvTwemuc21q/K6HXsSp9njkne6N1JQ71TB+QGqYU5VtxsVgYSUhhYqV6WcHz7LK4Hj6TvNFoeu69/rO0ysgw== +"@sentry/tracing@^7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.8.0.tgz#e803317f26bd54b05f95f78cdc456979f786627e" + integrity sha512-qhem3wJgyd2tgRk0nHMGkWtiI3ln0ZdN8N+5hLnW+CrSz8Xm5/L5gwWQszOFG7WCYM3wRYEV093MuHg+qTg8iA== dependencies: - "@sentry/hub" "7.7.0" - "@sentry/types" "7.7.0" - "@sentry/utils" "7.7.0" + "@sentry/hub" "7.8.0" + "@sentry/types" "7.8.0" + "@sentry/utils" "7.8.0" tslib "^1.9.3" -"@sentry/types@7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.7.0.tgz#dd6bd3d119d7efea0e85dbaa4b17de1c22b63c7a" - integrity sha512-4x8O7uerSGLnYC10krHl9t8h7xXHn5FextqKYbTCXCnx2hC8D+9lz8wcbQAFo0d97wiUYqI8opmEgFVGx7c5hQ== +"@sentry/types@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.8.0.tgz#009ee9c53b474030a6b14025a8904b6260d57484" + integrity sha512-X9D2jlcAzbJdCHA+eCMv2t5HI9769Qpx48e+sZiK7Oasy1jwQtqzQRaiI9fy/zZ+p7Fyerj/4WjW/E2c4dJ63w== -"@sentry/utils@7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.7.0.tgz#013e3097c4268a76de578494c7df999635fb0ad4" - integrity sha512-fD+ROSFpeJlK7bEvUT2LOW7QqgjBpXJwVISKZ0P2fuzclRC3KoB2pbZgBM4PXMMTiSzRGWhvfRRjBiBvQJBBJQ== +"@sentry/utils@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.8.0.tgz#ed9b9a607fa51125a48140b1ea836603202d3cc2" + integrity sha512-6WvXawUPs60R9MitHXFL533D/Ic9tqQZbvPnBXmAkfp90Y5rcoq2QfJjkqMk/Z+Gnplwi8/wcJCC8EtYKfWg6w== dependencies: - "@sentry/types" "7.7.0" + "@sentry/types" "7.8.0" tslib "^1.9.3" "@stitches/react@^1.2.8": @@ -2038,14 +2038,14 @@ braces@^3.0.2: fill-range "^7.0.1" browserslist@^4.20.2, browserslist@^4.21.2: - version "4.21.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" - integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== + version "4.21.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" + integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== dependencies: - caniuse-lite "^1.0.30001366" - electron-to-chromium "^1.4.188" + caniuse-lite "^1.0.30001370" + electron-to-chromium "^1.4.202" node-releases "^2.0.6" - update-browserslist-db "^1.0.4" + update-browserslist-db "^1.0.5" call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" @@ -2065,7 +2065,7 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001366: +caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001370: version "1.0.30001370" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz#0a30d4f20d38b9e108cc5ae7cc62df9fe66cd5ba" integrity sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g== @@ -2443,10 +2443,10 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.4.188: - version "1.4.199" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz#e0384fde79fdda89880e8be58196a9153e04db3b" - integrity sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg== +electron-to-chromium@^1.4.202: + version "1.4.202" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.202.tgz#0c2ed733f42b02ec49a955c5badfcc65888c390b" + integrity sha512-JYsK2ex9lmQD27kj19fhXYxzFJ/phLAkLKHv49A5UY6kMRV2xED3qMMLg/voW/+0AR6wMiI+VxlmK9NDtdxlPA== emoji-regex@^8.0.0: version "8.0.0" @@ -2540,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.4-canary.1: - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.2.4-canary.1.tgz#e15a32bd6f28ec9a142bac2e40b551ea53b0bbdf" - integrity sha512-gVjUO/kpWUSYO4g9swYQCpsinJtTMssDXQ8JNGz6iuPfVG+SNA+wcoGGzn+2ahww6bOST9nUavj5AMfDTm1qLw== +eslint-config-next@12.2.4-canary.2: + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.2.4-canary.2.tgz#4f2f99cfebc8aa6ccad0a5d7c98f5fbd1bd4a72b" + integrity sha512-RhEJJGApeej6jjTadruXFbCCXyBnktyZLgpYW9kZV9GZEC1ASzp8AILuA3FwwX2i1WFB/Es9YEnc4PG00TpoNw== dependencies: - "@next/eslint-plugin-next" "12.2.4-canary.1" + "@next/eslint-plugin-next" "12.2.4-canary.2" "@rushstack/eslint-patch" "^1.1.3" "@typescript-eslint/parser" "^5.21.0" eslint-import-resolver-node "^0.3.6" @@ -4354,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.4-canary.1: - version "12.2.4-canary.1" - resolved "https://registry.yarnpkg.com/next/-/next-12.2.4-canary.1.tgz#022bada3eb5505beda4bdd7df7a6e7359c51db5b" - integrity sha512-rpbosiN7/vUhw1cno2xnq5GJtqHg70d6fmnEdzNEM8eJcsQofD8wuBZCRkARKGBLlP8UKFScz6xH8ndbcIVLPA== +next@12.2.4-canary.2: + version "12.2.4-canary.2" + resolved "https://registry.yarnpkg.com/next/-/next-12.2.4-canary.2.tgz#f40aa4bcdc8dacb2abf76c6f7d63a88be7d86ae1" + integrity sha512-K7k8xhyC+4wrhW9c2DrLLPhhUG7XVFICgnfoavnO93TknhUBcZYQoSZq9T4EL/ct5hWu3xE3Prgd2+1WmoOSVg== dependencies: - "@next/env" "12.2.4-canary.1" + "@next/env" "12.2.4-canary.2" "@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.4-canary.1" - "@next/swc-android-arm64" "12.2.4-canary.1" - "@next/swc-darwin-arm64" "12.2.4-canary.1" - "@next/swc-darwin-x64" "12.2.4-canary.1" - "@next/swc-freebsd-x64" "12.2.4-canary.1" - "@next/swc-linux-arm-gnueabihf" "12.2.4-canary.1" - "@next/swc-linux-arm64-gnu" "12.2.4-canary.1" - "@next/swc-linux-arm64-musl" "12.2.4-canary.1" - "@next/swc-linux-x64-gnu" "12.2.4-canary.1" - "@next/swc-linux-x64-musl" "12.2.4-canary.1" - "@next/swc-win32-arm64-msvc" "12.2.4-canary.1" - "@next/swc-win32-ia32-msvc" "12.2.4-canary.1" - "@next/swc-win32-x64-msvc" "12.2.4-canary.1" + "@next/swc-android-arm-eabi" "12.2.4-canary.2" + "@next/swc-android-arm64" "12.2.4-canary.2" + "@next/swc-darwin-arm64" "12.2.4-canary.2" + "@next/swc-darwin-x64" "12.2.4-canary.2" + "@next/swc-freebsd-x64" "12.2.4-canary.2" + "@next/swc-linux-arm-gnueabihf" "12.2.4-canary.2" + "@next/swc-linux-arm64-gnu" "12.2.4-canary.2" + "@next/swc-linux-arm64-musl" "12.2.4-canary.2" + "@next/swc-linux-x64-gnu" "12.2.4-canary.2" + "@next/swc-linux-x64-musl" "12.2.4-canary.2" + "@next/swc-win32-arm64-msvc" "12.2.4-canary.2" + "@next/swc-win32-ia32-msvc" "12.2.4-canary.2" + "@next/swc-win32-x64-msvc" "12.2.4-canary.2" nlcst-to-string@^2.0.0: version "2.0.4" @@ -5637,7 +5637,7 @@ universal-user-agent@^6.0.0: resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== -update-browserslist-db@^1.0.4: +update-browserslist-db@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==