1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-06-30 22:06:38 -04:00

just some refactoring

This commit is contained in:
2022-03-09 14:07:06 -05:00
parent f5c8a7a21a
commit 87848cc697
26 changed files with 533 additions and 558 deletions

View File

@ -12,11 +12,10 @@ const InputStyles = css({
width: "100%",
padding: "0.8em",
margin: "0.6em 0",
border: "2px solid",
border: "2px solid $light",
borderRadius: "$rounded",
color: "$text",
backgroundColor: "$superDuperLight",
borderColor: "$light",
// light-dark theme switch fading
transition: "background 0.25s ease",

View File

@ -49,11 +49,7 @@ const NextjsLink = styled(Link, {
const ViewSourceLink = styled(Link, {
paddingBottom: "2px",
borderBottom: "1px solid",
borderColor: "$light",
// light-dark theme switch fading
transition: "border 0.25s ease",
borderBottom: "1px solid $light",
"&:hover": {
borderColor: "$kindaLight",

View File

@ -12,14 +12,12 @@ const Link = styled("a", {
current: {
true: {
marginBottom: "-0.2em",
borderBottom: "0.2em solid",
borderColor: "$linkUnderline",
borderBottom: "0.2em solid $linkUnderline",
},
false: {
"&:hover": {
marginBottom: "-0.2em",
borderBottom: "0.2em solid",
borderColor: "$kindaLight",
borderBottom: "0.2em solid $kindaLight",
},
},
},

View File

@ -1,28 +1,23 @@
// forked & modified from pacocoursey/next-themes as of:
// forked & modified from pacocoursey/next-themes as of v0.0.15:
// https://github.com/pacocoursey/next-themes/tree/b5c2bad50de2d61ad7b52a9c5cdc801a78507d7a
import { createContext, useCallback, useContext, useEffect, useState, useRef, memo } from "react";
import NextHead from "next/head";
import type { PropsWithChildren } from "react";
interface UseThemeProps {
/** List of all available theme names */
themes: string[];
/** Active theme name */
theme?: string;
/** If the active theme is "system", this returns whether the system preference resolved to "dark" or "light". Otherwise, identical to `theme` */
resolvedTheme?: string;
/** Forced theme name for the current page */
forcedTheme?: string;
/** Update the theme */
setTheme: (theme: string) => void;
// https://web.dev/prefers-color-scheme/#the-prefers-color-scheme-media-query
const MEDIA = "(prefers-color-scheme: dark)";
// default to a simple light or dark binary option
const colorSchemes = ["light", "dark"];
interface AttributeValuesMap {
[themeName: string]: string;
}
export interface ThemeProviderProps {
/** List of all available theme names */
themes?: string[];
/** Forced theme name for the current page */
forcedTheme?: string;
/** Whether to indicate to browsers which color scheme is used (dark or light) for built-in UI like inputs and buttons */
enableColorScheme?: boolean;
/** Key used to store theme setting in localStorage */
@ -32,9 +27,44 @@ export interface ThemeProviderProps {
/** HTML attribute modified based on the active theme. Accepts `class` and `data-*` (meaning any data attribute, `data-mode`, `data-color`, etc.) */
attribute?: string | "class";
/** Mapping of theme name to HTML attribute value. Object where key is the theme name and value is the attribute value */
value?: ValueObject;
value?: AttributeValuesMap;
}
export interface UseThemeProps {
/** List of all available theme names */
themes: string[];
/** Active theme name */
theme?: string;
/** If the active theme is "system", this returns whether the system preference resolved to "dark" or "light". Otherwise, identical to `theme` */
resolvedTheme?: string;
/** Update the theme */
setTheme: (theme: string) => void;
}
// get the current theme *after* being set by this script
const getTheme = (key: string, fallback?: string) => {
if (typeof window === "undefined") return undefined;
let theme;
try {
theme = localStorage.getItem(key) || undefined;
} catch (e) {} // eslint-disable-line no-empty
return theme || fallback;
};
// get the user's prefered theme as set via their OS/browser settings
const getSystemTheme = (e?: MediaQueryList) => {
if (!e) {
e = window.matchMedia(MEDIA);
}
const isDark = e.matches;
const systemTheme = isDark ? "dark" : "light";
return systemTheme;
};
// useTheme() function to get current theme state from pages/components/etc.
const ThemeContext = createContext<UseThemeProps>({
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
setTheme: (_) => {},
@ -42,15 +72,71 @@ const ThemeContext = createContext<UseThemeProps>({
});
export const useTheme = () => useContext(ThemeContext);
const colorSchemes = ["light", "dark"];
const MEDIA = "(prefers-color-scheme: dark)";
// the script tag injected manually into `<head>` by provider below
const ThemeScript = memo(function ThemeScript({
storageKey,
attribute,
defaultTheme,
value,
attrs,
}: {
storageKey: string;
attribute?: string;
defaultTheme: string;
value?: AttributeValuesMap;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
attrs: any;
}) {
const setDocumentVar = (() => {
if (attribute === "class") {
const removeClasses = `d.remove(${attrs.map((t: string) => `"${t}"`).join(",")})`;
interface ValueObject {
[themeName: string]: string;
}
// `d` is the class list of the `<html>` tag
return `var d=document.documentElement.classList;${removeClasses};`;
} else {
// `d` is the entire document, used to set custom attribute of the `<html>` tag (probably `data-*`)
return `var d=document.documentElement;`;
}
})();
const updateDOM = (name: string, literal?: boolean) => {
name = value?.[name] || name;
const val = literal ? name : `"${name}"`;
// mirrors above logic from setDocumentVar()
if (attribute === "class") {
return `d.add(${val})`;
} else {
return `d.setAttribute("${attribute}", ${val})`;
}
};
// is the default theme still `system`? (it should be...)
const defaultSystem = defaultTheme === "system";
// even though it's the proper method, using next/script with `strategy="beforeInteractive"` still causes flash of
// white on load. injecting a normal script tag lets us prioritize setting `<html>` attributes even more.
return (
<NextHead>
<script
key="next-themes-script"
dangerouslySetInnerHTML={{
__html: `!function(){try{${setDocumentVar}var e=localStorage.getItem("${storageKey}");${
!defaultSystem ? updateDOM(defaultTheme) + ";" : ""
}if("system"===e||(!e&&${defaultSystem})){var t="${MEDIA}",m=window.matchMedia(t);m.media!==t||m.matches?${updateDOM(
"dark"
)}:${updateDOM("light")}}else if(e){${value ? `var x=${JSON.stringify(value)}` : ""}}${updateDOM(
value ? "x[e]" : "e",
true
)}}catch(e){}}()`,
}}
/>
</NextHead>
);
});
// provider used once in _app.tsx to wrap entire app
export const ThemeProvider = ({
forcedTheme,
enableColorScheme = true,
storageKey = "theme",
themes = [...colorSchemes],
@ -67,9 +153,9 @@ export const ThemeProvider = ({
(e?) => {
const systemTheme = getSystemTheme(e);
setResolvedTheme(systemTheme);
if (theme === "system" && !forcedTheme) changeTheme(systemTheme, false);
if (theme === "system") changeTheme(systemTheme, false);
},
[theme, forcedTheme] // eslint-disable-line react-hooks/exhaustive-deps
[theme] // eslint-disable-line react-hooks/exhaustive-deps
);
// Ref hack to avoid adding handleMediaQuery as a dep
@ -82,9 +168,7 @@ export const ThemeProvider = ({
if (updateStorage) {
try {
localStorage.setItem(storageKey, theme);
} catch (e) {
// Unsupported
}
} catch (e) {} // eslint-disable-line no-empty
}
if (theme === "system") {
@ -120,14 +204,10 @@ export const ThemeProvider = ({
const setTheme = useCallback(
(newTheme) => {
if (forcedTheme) {
changeTheme(newTheme, true, false);
} else {
changeTheme(newTheme);
}
setThemeState(newTheme);
},
[forcedTheme] // eslint-disable-line react-hooks/exhaustive-deps
[] // eslint-disable-line react-hooks/exhaustive-deps
);
// localStorage event handling
@ -136,6 +216,7 @@ export const ThemeProvider = ({
if (e.key !== storageKey) {
return;
}
// If default theme set, use it if localstorage === null (happens on local storage manual deletion)
const theme = e.newValue || defaultTheme;
setTheme(theme);
@ -143,17 +224,14 @@ export const ThemeProvider = ({
window.addEventListener("storage", handleStorage);
return () => window.removeEventListener("storage", handleStorage);
}, [setTheme]); // eslint-disable-line react-hooks/exhaustive-deps
}, []); // eslint-disable-line react-hooks/exhaustive-deps
// color-scheme handling
useEffect(() => {
if (!enableColorScheme) return;
const colorScheme =
// If theme is forced to light or dark, use that
forcedTheme && colorSchemes.includes(forcedTheme)
? forcedTheme
: // If regular theme is light or dark
// If regular theme is light or dark
theme && colorSchemes.includes(theme)
? theme
: // If theme is system, use the resolved version
@ -164,7 +242,7 @@ export const ThemeProvider = ({
// color-scheme tells browser how to render built-in elements like forms, scrollbars, etc.
// if color-scheme is null, this will remove the property
document.documentElement.style.setProperty("color-scheme", colorScheme);
}, [enableColorScheme, theme, resolvedTheme, forcedTheme]);
}, [theme, resolvedTheme]); // eslint-disable-line react-hooks/exhaustive-deps
return (
<ThemeContext.Provider
@ -172,13 +250,11 @@ export const ThemeProvider = ({
themes: [...themes, "system"],
theme,
resolvedTheme: theme === "system" ? resolvedTheme : theme,
forcedTheme,
setTheme,
}}
>
<ThemeScript
{...{
forcedTheme,
storageKey,
attribute,
value,
@ -186,105 +262,8 @@ export const ThemeProvider = ({
attrs,
}}
/>
{children}
</ThemeContext.Provider>
);
};
const ThemeScript = memo(
function ThemeScript({
forcedTheme,
storageKey,
attribute,
defaultTheme,
value,
attrs,
}: {
forcedTheme?: string;
storageKey: string;
attribute?: string;
defaultTheme: string;
value?: ValueObject;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
attrs: any;
}) {
// Code-golfing the amount of characters in the script
const optimization = (() => {
if (attribute === "class") {
const removeClasses = `d.remove(${attrs.map((t: string) => `"${t}"`).join(",")})`;
return `var d=document.documentElement.classList;${removeClasses};`;
} else {
return `var d=document.documentElement;`;
}
})();
const updateDOM = (name: string, literal?: boolean) => {
name = value?.[name] || name;
const val = literal ? name : `"${name}"`;
if (attribute === "class") {
return `d.add(${val})`;
}
return `d.setAttribute("${attribute}", ${val})`;
};
const defaultSystem = defaultTheme === "system";
return (
<NextHead>
{forcedTheme ? (
<script
key="next-themes-script"
dangerouslySetInnerHTML={{
__html: `!function(){${optimization}${updateDOM(forcedTheme)}}()`,
}}
/>
) : (
<script
key="next-themes-script"
dangerouslySetInnerHTML={{
__html: `!function(){try{${optimization}var e=localStorage.getItem("${storageKey}");${
!defaultSystem ? updateDOM(defaultTheme) + ";" : ""
}if("system"===e||(!e&&${defaultSystem})){var t="${MEDIA}",m=window.matchMedia(t);m.media!==t||m.matches?${updateDOM(
"dark"
)}:${updateDOM("light")}}else if(e){${value ? `var x=${JSON.stringify(value)}` : ""}}${updateDOM(
value ? "x[e]" : "e",
true
)}}catch(e){}}()`,
}}
/>
)}
</NextHead>
);
},
(prevProps, nextProps) => {
// Only re-render when forcedTheme changes
// the rest of the props should be completely stable
if (prevProps.forcedTheme !== nextProps.forcedTheme) return false;
return true;
}
);
// Helpers
const getTheme = (key: string, fallback?: string) => {
if (typeof window === "undefined") return undefined;
let theme;
try {
theme = localStorage.getItem(key) || undefined;
} catch (e) {
// Unsupported
}
return theme || fallback;
};
const getSystemTheme = (e?: MediaQueryList) => {
if (!e) {
e = window.matchMedia(MEDIA);
}
const isDark = e.matches;
const systemTheme = isDark ? "dark" : "light";
return systemTheme;
};

View File

@ -1,6 +1,6 @@
import { Feed } from "feed";
import { getAllNotes } from "./parse-notes";
import * as config from "./config";
import * as config from "../config";
import type { GetServerSidePropsContext, PreviewData } from "next";
import type { ParsedUrlQuery } from "querystring";

View File

@ -0,0 +1,24 @@
import dynamic from "next/dynamic";
// Bundle these components by default:
export { default as Image } from "../../components/Image/Image";
export { default as Figure } from "../../components/Figure/Figure";
// These (mostly very small) components are direct replacements for HTML tags generated by remark:
export { default as a } from "../../components/Link/Link";
export { default as code } from "../../components/CodeBlock/CodeBlock";
export { default as blockquote } from "../../components/Blockquote/Blockquote";
export { default as hr } from "../../components/HorizontalRule/HorizontalRule";
export { H1 as h1, H2 as h2, H3 as h3, H4 as h4, H5 as h5, H6 as h6 } from "../../components/Heading/Heading";
export { UnorderedList as ul, OrderedList as ol, ListItem as li } from "../../components/List/List";
// ...and these components are technically passed into all posts, but next/dynamic ensures they're loaded only
// when they're referenced in the individual mdx files.
export const IFrame = dynamic(() => import("../../components/IFrame/IFrame"));
export const Video = dynamic(() => import("../../components/Video/Video"));
export const YouTube = dynamic(() => import("../../components/YouTubeEmbed/YouTubeEmbed"));
export const Tweet = dynamic(() => import("../../components/TweetEmbed/TweetEmbed"));
export const Gist = dynamic(() => import("../../components/GistEmbed/GistEmbed"));
// One-offs for specific posts:
export const OctocatLink = dynamic(() => import("../../components/OctocatLink/OctocatLink"));

View File

@ -8,8 +8,8 @@ import { compiler } from "markdown-to-jsx";
import removeMarkdown from "remove-markdown";
import sanitizeHtml from "sanitize-html";
import readingTime from "reading-time";
import { baseUrl } from "./config";
import { NOTES_DIR } from "./config/constants";
import { baseUrl } from "../config";
import { NOTES_DIR } from "../config/constants";
// remark/rehype markdown plugins
import remarkGfm from "remark-gfm";
@ -17,7 +17,7 @@ import rehypeSlug from "rehype-slug";
import rehypePrism from "rehype-prism-plus";
import type { MinifyOptions } from "terser";
import type { NoteType } from "../types";
import type { NoteType } from "../../types";
// returns all .mdx files in NOTES_DIR (without .mdx extension)
export const getNoteSlugs = () =>

View File

@ -1,24 +0,0 @@
import dynamic from "next/dynamic";
// Bundle these components by default:
export { default as Image } from "../components/Image/Image";
export { default as Figure } from "../components/Figure/Figure";
// These (mostly very small) components are direct replacements for HTML tags generated by remark:
export { default as a } from "../components/Link/Link";
export { default as code } from "../components/CodeBlock/CodeBlock";
export { default as blockquote } from "../components/Blockquote/Blockquote";
export { default as hr } from "../components/HorizontalRule/HorizontalRule";
export { H1 as h1, H2 as h2, H3 as h3, H4 as h4, H5 as h5, H6 as h6 } from "../components/Heading/Heading";
export { UnorderedList as ul, OrderedList as ol, ListItem as li } from "../components/List/List";
// ...and these components are technically passed into all posts, but next/dynamic ensures they're loaded only
// when they're referenced in the individual mdx files.
export const IFrame = dynamic(() => import("../components/IFrame/IFrame"));
export const Video = dynamic(() => import("../components/Video/Video"));
export const YouTube = dynamic(() => import("../components/YouTubeEmbed/YouTubeEmbed"));
export const Tweet = dynamic(() => import("../components/TweetEmbed/TweetEmbed"));
export const Gist = dynamic(() => import("../components/GistEmbed/GistEmbed"));
// One-offs for specific posts:
export const OctocatLink = dynamic(() => import("../components/OctocatLink/OctocatLink"));

View File

@ -1,29 +0,0 @@
// @ts-nocheck
// Legacy
import comicNeueLatin400NormalWoff from "@fontsource/comic-neue/files/comic-neue-latin-400-normal.woff";
import comicNeueLatin400NormalWoff2 from "@fontsource/comic-neue/files/comic-neue-latin-400-normal.woff2";
import comicNeueLatin700NormalWoff from "@fontsource/comic-neue/files/comic-neue-latin-700-normal.woff";
import comicNeueLatin700NormalWoff2 from "@fontsource/comic-neue/files/comic-neue-latin-700-normal.woff2";
const ComicNeue = {
preloadUrl: null, // don't preload, only used on one page
family: [
{
fontFamily: "Comic Neue",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 400,
src: `url(${comicNeueLatin400NormalWoff2}) format("woff2"), url(${comicNeueLatin400NormalWoff}) format("woff")`,
},
{
fontFamily: "Comic Neue",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 700,
src: `url(${comicNeueLatin700NormalWoff2}) format("woff2"), url(${comicNeueLatin700NormalWoff}) format("woff")`,
},
],
};
export default ComicNeue;

View File

@ -1,49 +0,0 @@
// @ts-nocheck
// Legacy
import interLatin400NormalWoff from "@fontsource/inter/files/inter-latin-400-normal.woff";
import interLatin400NormalWoff2 from "@fontsource/inter/files/inter-latin-400-normal.woff2";
import interLatin500NormalWoff from "@fontsource/inter/files/inter-latin-500-normal.woff";
import interLatin500NormalWoff2 from "@fontsource/inter/files/inter-latin-500-normal.woff2";
import interLatin700NormalWoff from "@fontsource/inter/files/inter-latin-700-normal.woff";
import interLatin700NormalWoff2 from "@fontsource/inter/files/inter-latin-700-normal.woff2";
// Variable
import interLatinVarFullNormalWoff2 from "@fontsource/inter/files/inter-latin-variable-full-normal.woff2";
const Inter = {
// re-export hashed URL of the most prominent file so we can preload it in head:
preloadUrl: interLatinVarFullNormalWoff2,
family: [
{
fontFamily: "Inter",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 400,
src: `url(${interLatin400NormalWoff2}) format("woff2"), url(${interLatin400NormalWoff}) format("woff")`,
},
{
fontFamily: "Inter",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 500,
src: `url(${interLatin500NormalWoff2}) format("woff2"), url(${interLatin500NormalWoff}) format("woff")`,
},
{
fontFamily: "Inter",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 700,
src: `url(${interLatin700NormalWoff2}) format("woff2"), url(${interLatin700NormalWoff}) format("woff")`,
},
{
fontFamily: "Inter var",
fontStyle: "oblique 0deg 10deg",
fontDisplay: "swap",
fontWeight: "100 900",
src: `url(${interLatinVarFullNormalWoff2}) format("woff2")`,
},
],
};
export default Inter;

View File

@ -1,84 +0,0 @@
// @ts-nocheck
// Legacy
import robotoMonoLatin400NormalWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-400-normal.woff";
import robotoMonoLatin400NormalWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-400-normal.woff2";
import robotoMonoLatin500NormalWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-500-normal.woff";
import robotoMonoLatin500NormalWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-500-normal.woff2";
import robotoMonoLatin700NormalWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-700-normal.woff";
import robotoMonoLatin700NormalWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-700-normal.woff2";
import robotoMonoLatin400ItalicWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-400-italic.woff";
import robotoMonoLatin400ItalicWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-400-italic.woff2";
import robotoMonoLatin500ItalicWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-500-italic.woff";
import robotoMonoLatin500ItalicWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-500-italic.woff2";
import robotoMonoLatin700ItalicWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-700-italic.woff";
import robotoMonoLatin700ItalicWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-700-italic.woff2";
// Variable
import robotoMonoLatinVarWghtOnlyNormalWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-variable-wghtOnly-normal.woff2";
import robotoMonoLatinVarWghtOnlyItalicWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-variable-wghtOnly-italic.woff2";
const RobotoMono = {
// re-export hashed URL of the most prominent file so we can preload it in head:
preloadUrl: robotoMonoLatinVarWghtOnlyNormalWoff2,
family: [
{
fontFamily: "Roboto Mono",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 400,
src: `url(${robotoMonoLatin400NormalWoff2}) format("woff2"), url(${robotoMonoLatin400NormalWoff}) format("woff")`,
},
{
fontFamily: "Roboto Mono",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 500,
src: `url(${robotoMonoLatin500NormalWoff2}) format("woff2"), url(${robotoMonoLatin500NormalWoff}) format("woff")`,
},
{
fontFamily: "Roboto Mono",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 700,
src: `url(${robotoMonoLatin700NormalWoff2}) format("woff2"), url(${robotoMonoLatin700NormalWoff}) format("woff")`,
},
{
fontFamily: "Roboto Mono",
fontStyle: "italic",
fontDisplay: "swap",
fontWeight: 400,
src: `url(${robotoMonoLatin400ItalicWoff2}) format("woff2"), url(${robotoMonoLatin400ItalicWoff}) format("woff")`,
},
{
fontFamily: "Roboto Mono",
fontStyle: "italic",
fontDisplay: "swap",
fontWeight: 500,
src: `url(${robotoMonoLatin500ItalicWoff2}) format("woff2"), url(${robotoMonoLatin500ItalicWoff}) format("woff")`,
},
{
fontFamily: "Roboto Mono",
fontStyle: "italic",
fontDisplay: "swap",
fontWeight: 700,
src: `url(${robotoMonoLatin700ItalicWoff2}) format("woff2"), url(${robotoMonoLatin700ItalicWoff}) format("woff")`,
},
{
fontFamily: "Roboto Mono var",
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: "100 700",
src: `url(${robotoMonoLatinVarWghtOnlyNormalWoff2}) format("woff2")`,
},
{
fontFamily: "Roboto Mono var",
fontStyle: "italic",
fontDisplay: "swap",
fontWeight: "100 700",
src: `url(${robotoMonoLatinVarWghtOnlyItalicWoff2}) format("woff2")`,
},
],
};
export default RobotoMono;

View File

@ -0,0 +1,27 @@
// @ts-nocheck
// Legacy
import comicNeueLatin400NormalWoff from "@fontsource/comic-neue/files/comic-neue-latin-400-normal.woff";
import comicNeueLatin400NormalWoff2 from "@fontsource/comic-neue/files/comic-neue-latin-400-normal.woff2";
import comicNeueLatin700NormalWoff from "@fontsource/comic-neue/files/comic-neue-latin-700-normal.woff";
import comicNeueLatin700NormalWoff2 from "@fontsource/comic-neue/files/comic-neue-latin-700-normal.woff2";
export const name = {
regular: "Comic Neue",
};
export const family = [
{
fontFamily: name.regular,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 400,
src: `url(${comicNeueLatin400NormalWoff2}) format("woff2"), url(${comicNeueLatin400NormalWoff}) format("woff")`,
},
{
fontFamily: name.regular,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 700,
src: `url(${comicNeueLatin700NormalWoff2}) format("woff2"), url(${comicNeueLatin700NormalWoff}) format("woff")`,
},
];

View File

@ -0,0 +1,49 @@
// @ts-nocheck
// Legacy
import interLatin400NormalWoff from "@fontsource/inter/files/inter-latin-400-normal.woff";
import interLatin400NormalWoff2 from "@fontsource/inter/files/inter-latin-400-normal.woff2";
import interLatin500NormalWoff from "@fontsource/inter/files/inter-latin-500-normal.woff";
import interLatin500NormalWoff2 from "@fontsource/inter/files/inter-latin-500-normal.woff2";
import interLatin700NormalWoff from "@fontsource/inter/files/inter-latin-700-normal.woff";
import interLatin700NormalWoff2 from "@fontsource/inter/files/inter-latin-700-normal.woff2";
// Variable
import interLatinVarFullNormalWoff2 from "@fontsource/inter/files/inter-latin-variable-full-normal.woff2";
export const name = {
regular: "Inter",
variable: "Inter var",
};
// re-export hashed URL(s) of the most prominent file so we can preload it in head:
export const preloadUrls = [interLatinVarFullNormalWoff2];
export const family = [
{
fontFamily: name.regular,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 400,
src: `url(${interLatin400NormalWoff2}) format("woff2"), url(${interLatin400NormalWoff}) format("woff")`,
},
{
fontFamily: name.regular,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 500,
src: `url(${interLatin500NormalWoff2}) format("woff2"), url(${interLatin500NormalWoff}) format("woff")`,
},
{
fontFamily: name.regular,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 700,
src: `url(${interLatin700NormalWoff2}) format("woff2"), url(${interLatin700NormalWoff}) format("woff")`,
},
{
fontFamily: name.variable,
fontStyle: "oblique 0deg 10deg",
fontDisplay: "swap",
fontWeight: "100 900",
src: `url(${interLatinVarFullNormalWoff2}) format("woff2")`,
},
];

View File

@ -0,0 +1,84 @@
// @ts-nocheck
// Legacy
import robotoMonoLatin400NormalWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-400-normal.woff";
import robotoMonoLatin400NormalWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-400-normal.woff2";
import robotoMonoLatin500NormalWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-500-normal.woff";
import robotoMonoLatin500NormalWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-500-normal.woff2";
import robotoMonoLatin700NormalWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-700-normal.woff";
import robotoMonoLatin700NormalWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-700-normal.woff2";
import robotoMonoLatin400ItalicWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-400-italic.woff";
import robotoMonoLatin400ItalicWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-400-italic.woff2";
import robotoMonoLatin500ItalicWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-500-italic.woff";
import robotoMonoLatin500ItalicWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-500-italic.woff2";
import robotoMonoLatin700ItalicWoff from "@fontsource/roboto-mono/files/roboto-mono-latin-700-italic.woff";
import robotoMonoLatin700ItalicWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-700-italic.woff2";
// Variable
import robotoMonoLatinVarWghtOnlyNormalWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-variable-wghtOnly-normal.woff2";
import robotoMonoLatinVarWghtOnlyItalicWoff2 from "@fontsource/roboto-mono/files/roboto-mono-latin-variable-wghtOnly-italic.woff2";
export const name = {
regular: "Roboto Mono",
variable: "Roboto Mono var",
};
// re-export hashed URL(s) of the most prominent file so we can preload it in head:
export const preloadUrls = [robotoMonoLatinVarWghtOnlyNormalWoff2];
export const family = [
{
fontFamily: name.regular,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 400,
src: `url(${robotoMonoLatin400NormalWoff2}) format("woff2"), url(${robotoMonoLatin400NormalWoff}) format("woff")`,
},
{
fontFamily: name.regular,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 500,
src: `url(${robotoMonoLatin500NormalWoff2}) format("woff2"), url(${robotoMonoLatin500NormalWoff}) format("woff")`,
},
{
fontFamily: name.regular,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: 700,
src: `url(${robotoMonoLatin700NormalWoff2}) format("woff2"), url(${robotoMonoLatin700NormalWoff}) format("woff")`,
},
{
fontFamily: name.regular,
fontStyle: "italic",
fontDisplay: "swap",
fontWeight: 400,
src: `url(${robotoMonoLatin400ItalicWoff2}) format("woff2"), url(${robotoMonoLatin400ItalicWoff}) format("woff")`,
},
{
fontFamily: name.regular,
fontStyle: "italic",
fontDisplay: "swap",
fontWeight: 500,
src: `url(${robotoMonoLatin500ItalicWoff2}) format("woff2"), url(${robotoMonoLatin500ItalicWoff}) format("woff")`,
},
{
fontFamily: name.regular,
fontStyle: "italic",
fontDisplay: "swap",
fontWeight: 700,
src: `url(${robotoMonoLatin700ItalicWoff2}) format("woff2"), url(${robotoMonoLatin700ItalicWoff}) format("woff")`,
},
{
fontFamily: name.variable,
fontStyle: "normal",
fontDisplay: "swap",
fontWeight: "100 700",
src: `url(${robotoMonoLatinVarWghtOnlyNormalWoff2}) format("woff2")`,
},
{
fontFamily: name.variable,
fontStyle: "italic",
fontDisplay: "swap",
fontWeight: "100 700",
src: `url(${robotoMonoLatinVarWghtOnlyItalicWoff2}) format("woff2")`,
},
];

View File

@ -0,0 +1,9 @@
import * as Inter from "./fonts/inter";
import * as RobotoMono from "./fonts/roboto-mono";
import * as ComicNeue from "./fonts/comic-neue";
// re-export hashed URLs of the most important variable fonts so we can preload them in pages/_document.tsx
export const preloadUrls = [...Inter.preloadUrls, ...RobotoMono.preloadUrls];
// re-export everything for use in ../stitches.config.ts
export { Inter, RobotoMono, ComicNeue };

View File

@ -1,22 +1,22 @@
import { createStitches, defaultThemeMap } from "@stitches/react";
import hex2rgba from "./helpers/hex-to-rgba";
// modified modern-normalize.css in object form:
// https://github.com/jakejarvis/stitches-normalize/blob/main/index.js
import normalizeCss from "stitches-normalize";
// web fonts
import Inter from "./fonts/inter";
import RobotoMono from "./fonts/roboto-mono";
import ComicNeue from "./fonts/comic-neue";
import { Inter, RobotoMono, ComicNeue } from "./helpers/typography";
// misc. helpers
import hex2rgba from "./helpers/hex-to-rgba";
export const { styled, css, getCssText, globalCss, keyframes, createTheme, theme } = createStitches({
theme: {
fonts: {
sans: `Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`,
sansVar: `"Inter var", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`,
mono: `"Roboto Mono", ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier`,
monoVar: `"Roboto Mono var", ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier`,
sans: `"${Inter.name.regular}", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`,
sansVar: `"${Inter.name.variable}", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`,
mono: `"${RobotoMono.name.regular}", ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier`,
monoVar: `"${RobotoMono.name.variable}", ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier`,
},
colors: {
@ -160,10 +160,5 @@ export const globalStyles = globalCss(
}
);
// re-export hashed URLs of the most important variable fonts so we can preload them in ../../pages/_document.tsx
export const preloadUrls = {
fonts: {
InterVar: Inter.preloadUrl,
RobotoMonoVar: RobotoMono.preloadUrl,
},
};
// re-export all font data so we can do things like preloading them in pages/_document.tsx
export * as fonts from "./helpers/typography";

View File

@ -23,13 +23,13 @@
"@fontsource/roboto-mono": "4.5.3",
"@giscus/react": "^1.1.2",
"@hcaptcha/react-hcaptcha": "^1.1.1",
"@next/bundle-analyzer": "12.1.1-canary.6",
"@next/bundle-analyzer": "12.1.1-canary.8",
"@novnc/novnc": "github:novnc/noVNC#679b45fa3b453c7cf32f4b4455f4814818ecf161",
"@octokit/graphql": "^4.8.0",
"@primer/octicons": "^17.0.0",
"@react-spring/web": "^9.4.3",
"@sentry/node": "^6.18.1",
"@sentry/tracing": "^6.18.1",
"@sentry/node": "^6.18.2",
"@sentry/tracing": "^6.18.2",
"@stitches/react": "^1.2.7",
"copy-to-clipboard": "^3.3.1",
"date-fns": "^2.28.0",
@ -42,7 +42,7 @@
"gray-matter": "^4.0.3",
"is-absolute-url": "^4.0.1",
"markdown-to-jsx": "^7.1.7",
"next": "12.1.1-canary.6",
"next": "12.1.1-canary.8",
"next-compose-plugins": "^2.2.1",
"next-mdx-remote": "^4.0.0",
"next-seo": "^5.1.0",
@ -87,7 +87,7 @@
"@typescript-eslint/parser": "^5.14.0",
"cross-env": "^7.0.3",
"eslint": "~8.10.0",
"eslint-config-next": "12.1.1-canary.6",
"eslint-config-next": "12.1.1-canary.8",
"eslint-config-prettier": "~8.5.0",
"eslint-plugin-mdx": "~1.16.0",
"eslint-plugin-prettier": "~4.0.0",

View File

@ -1,5 +1,5 @@
import { Html, Head, Main, NextScript } from "next/document";
import { getCssText, preloadUrls } from "../lib/styles/stitches.config";
import { getCssText, fonts } from "../lib/styles/stitches.config";
import * as config from "../lib/config";
// https://nextjs.org/docs/advanced-features/custom-document
@ -7,15 +7,17 @@ const Document = () => {
return (
<Html lang={config.siteLocale?.replace("_", "-")}>
<Head>
{/* static asset preloads */}
<link rel="preload" as="font" type="font/woff2" href={preloadUrls.fonts.InterVar} crossOrigin="anonymous" />
{/* preload highest priority fonts defined in ../lib/styles/fonts/ */}
{fonts.preloadUrls.map((relativeUrl, index) => (
<link
key={`font-${index}`}
rel="preload"
as="font"
type="font/woff2"
href={preloadUrls.fonts.RobotoMonoVar}
href={relativeUrl}
crossOrigin="anonymous"
/>
))}
{/* stitches SSR: https://stitches.dev/blog/using-nextjs-with-stitches#step-3-ssr */}
<style id="stitches" dangerouslySetInnerHTML={{ __html: getCssText() }} />

View File

@ -1,6 +1,6 @@
import pRetry from "p-retry";
import faunadb from "faunadb";
import { getAllNotes } from "../../lib/parse-notes";
import { getAllNotes } from "../../lib/helpers/parse-notes";
import { logServerError } from "../../lib/helpers/sentry";
import type { NextApiRequest, NextApiResponse } from "next";

View File

@ -1,4 +1,4 @@
import { buildFeed } from "../lib/build-feed";
import { buildFeed } from "../lib/helpers/build-feed";
import type { GetServerSideProps } from "next";
export const getServerSideProps: GetServerSideProps = async (context) => {

View File

@ -1,4 +1,4 @@
import { buildFeed } from "../lib/build-feed";
import { buildFeed } from "../lib/helpers/build-feed";
import type { GetServerSideProps } from "next";
export const getServerSideProps: GetServerSideProps = async (context) => {

View File

@ -5,8 +5,8 @@ import { htmlEscape } from "escape-goat";
import Content from "../../components/Content/Content";
import NoteMeta from "../../components/NoteMeta/NoteMeta";
import Comments from "../../components/Comments/Comments";
import * as mdxComponents from "../../lib/mdx-components";
import { getNote, getNoteSlugs } from "../../lib/parse-notes";
import * as mdxComponents from "../../lib/helpers/mdx-components";
import { getNote, getNoteSlugs } from "../../lib/helpers/parse-notes";
import * as config from "../../lib/config";
import { articleJsonLd } from "../../lib/config/seo";
import type { GetStaticProps, GetStaticPaths } from "next";

View File

@ -2,7 +2,7 @@ import { NextSeo } from "next-seo";
import { format } from "date-fns";
import Content from "../../components/Content/Content";
import NotesList, { NotesListProps } from "../../components/NotesList/NotesList";
import { getAllNotes } from "../../lib/parse-notes";
import { getAllNotes } from "../../lib/helpers/parse-notes";
import type { GetStaticProps } from "next";
const Notes = ({ notesByYear }: NotesListProps) => (

View File

@ -1,5 +1,5 @@
import { getServerSideSitemap } from "next-sitemap";
import { getAllNotes } from "../lib/parse-notes";
import { getAllNotes } from "../lib/helpers/parse-notes";
import { baseUrl } from "../lib/config";
import type { GetServerSideProps } from "next";
import type { ISitemapField } from "next-sitemap";

2
types/note.d.ts vendored
View File

@ -14,6 +14,6 @@ export type NoteType = {
noComments?: boolean;
};
// the final, compiled JSX by next-mdx-remote; see lib/parse-notes.ts
// the final, compiled JSX by next-mdx-remote; see lib/helpers/parse-notes.ts
source: MDXRemoteSerializeResult;
};

359
yarn.lock
View File

@ -1147,84 +1147,84 @@
resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==
"@next/bundle-analyzer@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-12.1.1-canary.6.tgz#3374e436de0380d268017decdaf5de322c99c776"
integrity sha512-m07hig1yJNOGptkl11R2HKX9kAcALcbsIbVZkjNOIT/LSAXElLLJEm0dHOItEr6bMHdY3eqKCDlJC7iM+NavpQ==
"@next/bundle-analyzer@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-12.1.1-canary.8.tgz#dc734e552d063196de63f534eeffd373427cdfae"
integrity sha512-P2rJ3EhNwVNtfGJ3F3NRbKIJY5jVP3w+cifT7KhbAJdoirGU4tgnA2EyL6DgD1G+sUPKDcEJNsJRRex0CKpW3Q==
dependencies:
webpack-bundle-analyzer "4.3.0"
"@next/env@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.1-canary.6.tgz#420fde7cf0ef9f46a2e984bbd6d744eeba68f751"
integrity sha512-KjoQcatzKYkhHqovx78OMxfb53F92QXRePZvbFO1TTRMwG32FD7+hmpYyyAJBRooD/FWqpfXdYk4t/qZReD6rw==
"@next/env@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.1-canary.8.tgz#0984c8519a43c83c8627d5d2e4af7696ba4adfd1"
integrity sha512-UAjHkTKzpGG3b6cMWZkjHbvgv6NCWCyB9w+7a4U+6z1VNwC61keXiQwSK8mDM9irli+sYlrZjjFKVYiuTPYL4Q==
"@next/eslint-plugin-next@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.1-canary.6.tgz#e6183f4ef2998242d9a6f2c1a2d716eb001af5b1"
integrity sha512-LJphoYE7J0g/5NsyZAmpEzEZO/WXbu18b9oVQHWPHO9dD2UedKgrfeCNUuv/cEwOpKsIuXn4LMo+kBUvcV8fUA==
"@next/eslint-plugin-next@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.1-canary.8.tgz#9c2d1cef406b7f912c6a335fdb317aa492738772"
integrity sha512-2ry7q/j4mk7PKPo3YGEFnE4t7HCKimuquDGT8OitdTiC5fjKx/N2iuLx+k2CSZxBQU050T3QV+KsKBc+84fkAA==
dependencies:
glob "7.1.7"
"@next/swc-android-arm-eabi@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.1-canary.6.tgz#8a979f51b46bb32239541cb50bd5c03050bb5247"
integrity sha512-DU25t8TvCyIEWYILLUMXvW4uPfBgMq2vxR/JqqJotDbSf58IPAk5BuAWXOEESWkFphjLGqyuaUS77rHwyGRoZw==
"@next/swc-android-arm-eabi@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.1-canary.8.tgz#261f8516854a7217c9c5bee91acd356d89e7373f"
integrity sha512-SPXTw0tl1Eb/MIxft6sdFUOPcf+agzC5BrZGG4R6p5YYrpQxFt2GYnXBKYj/nTyrpJ+6cCYRGtGa+c/OlP0SAg==
"@next/swc-android-arm64@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.1-canary.6.tgz#3eb958eee81b072f27fdd8d07de285b64553a878"
integrity sha512-7Gj6FrG5S+jbq74vSFhr2FuIVV1j0/ZPJCfvrkIQdFImqefJf2hKt/C+nsSagLWKDWB7B+b7VmY+CUDBP64sAw==
"@next/swc-android-arm64@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.1-canary.8.tgz#41f58dc81fdee476c2d1925ff8540da940523c45"
integrity sha512-tVJ2Y7hTsRnkpwDZQM4io7hls/ApO+Zf+MsddqX70Dq0isW1itZ1v8Rc4Dmy+zyt7TAj2KCnLZwS+G5LQ8ZaVA==
"@next/swc-darwin-arm64@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.1-canary.6.tgz#42b6204825151d25c69e6ee3e76f6cf5cb904b36"
integrity sha512-X8ZMuj4YeiN4OP5yN0KwEVRkC6osAcp8thYcSVF50gBgBQkxNCuvdFTg+GB4tBcfAmJ858LP7ci11T3T5e657A==
"@next/swc-darwin-arm64@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.1-canary.8.tgz#36e86f33dc04065cbdce3826179d31b199583ae3"
integrity sha512-6WTRO8yrdyHUWvkytfmOfdrcwTrzmvzyLwRiDVl+QpXttUx6USM/bKkSwFHnSKHOwg7vd3mcz4UGPw0nCcrUwA==
"@next/swc-darwin-x64@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.1-canary.6.tgz#65dfdbfa0c054999bd25cfcb016d92ed30feb967"
integrity sha512-B2BAB6x7vj98fgbG/2m1xIqSYT7FI1V0/HpIDLBb1iDGYMt2ex2ov1vMnldVNvgjquZGUUbSg0prNZWDNjLP3A==
"@next/swc-darwin-x64@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.1-canary.8.tgz#d7da4c9bd238d06c1854dc5e6a585877acc428cf"
integrity sha512-ktp3PiwRkKpnvv0udIb296qqH3yIRk1QQLVWwC9qxpi4w2FeP8q1gBJbBiO8AsKSMomwJ1eUfaJgg9YjYIUt/Q==
"@next/swc-linux-arm-gnueabihf@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.1-canary.6.tgz#3045c77ba184e1fef553b6e1696a2d5a9202c4c9"
integrity sha512-eATESuf0O+sI37/LKP6xJmi22mj5WlCPsQ47gPLcLzoL/y+p9E5c2QsXWnn4Cfi3cxOVraYGVLu4rcUXULk54w==
"@next/swc-linux-arm-gnueabihf@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.1-canary.8.tgz#484b4f393a88fc8de65deb9e014f5787820c3f7b"
integrity sha512-FJwuvbUdGqtqMfhMxPizxUdkqrzezrJVUVT9WErI6Ea6TjWuwN7DYyj8P5HGE6NwBdc/xZetmUXA8NimKpI1vg==
"@next/swc-linux-arm64-gnu@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.1-canary.6.tgz#4ad2c39eaab1ad6c68f9fae4b65e89a131c29b55"
integrity sha512-e83KBGl28NJ9KHhXknl/56j+1kHXF31rucJbOJ+iSdnXett40eJPmRa9y4XLxBiiawkqMdayeNyEj/vN4VHPKA==
"@next/swc-linux-arm64-gnu@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.1-canary.8.tgz#f05f3447ffd02c09182795066eee8d3807946edd"
integrity sha512-D4v6mMOsPtSIlR6UX5d84HiqHnSV2wCZKbEMQ4M9pQwBcWcFt9LzNU6cZnWDFEBZeI6gSh66xS5pR/rnUU1BFA==
"@next/swc-linux-arm64-musl@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.1-canary.6.tgz#c2c0b032f5e2da14db96de34074b6583bc6f9310"
integrity sha512-UBCqVwHBnRixWLF/j3iwRqXsTddfEP2BGn104ENDt5so/9NecBL/BiHSzy1EY9GGcGE9DrFVpXuIQjC561uyuQ==
"@next/swc-linux-arm64-musl@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.1-canary.8.tgz#10f2f98bd9f75b175ccc98305d651dd172ddd1d9"
integrity sha512-XGNREcMBtqJ+/irCMLxPKy3IAZVrkyEra1jFCOqJqMGuPioaBrPMyJpi8110hG/aGSHzLUGMwIj7SFZiEBjiwQ==
"@next/swc-linux-x64-gnu@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.1-canary.6.tgz#f3f2d72ec71ec32fbce7e35db101341102f8cfc1"
integrity sha512-wV4aAG4waocc9yxHRXbZVZG31//5lAlcU3FyJDWEgsdgz1jhBoJRxiypd0Xm8FmjMRIj7FlFz1MsHjHYc7HKQQ==
"@next/swc-linux-x64-gnu@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.1-canary.8.tgz#5118536cdc947b00ef1cb66106c1fe40b141862a"
integrity sha512-KfWvld2D+RLrAWWBKBgGWkFy90pbiV20WvV8CwI3YVk13r7Uqv5g8FcjdCQmoXtNocC0UylB5lraxBr0x2gT+w==
"@next/swc-linux-x64-musl@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.1-canary.6.tgz#2265421b0cb62a7ab38789db453aa21c2a802662"
integrity sha512-AN+Z7XWsPV+NzvOcISReBlrUhpoy0kiz6MCYGUXWCZXmav/3HcOVqJFJhzo0eHYQNUcgiuy8Q/tMPqMNpQ3mJA==
"@next/swc-linux-x64-musl@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.1-canary.8.tgz#c27e691b55eb7b2422059c42fa990029006ddb96"
integrity sha512-J8Xzbb5UQ4mjDqB9tBJFUGA9ASY31kuSHq4QjRb5Ko2O1+VWSX2jrxFW6UHjYhfypmLYFgWK6e1HghWDblPoTg==
"@next/swc-win32-arm64-msvc@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.1-canary.6.tgz#1d7848c6dcc7e470b7bea45b80066183b0cbcfd8"
integrity sha512-2p/D4AHBnaojbxA6X5aR6zRoQAC/3eBpszJaW5O4UShEpW1y3JQ+AbQ6cYFjpdTDIxRgdBrcnDwoA1PJLlSmyw==
"@next/swc-win32-arm64-msvc@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.1-canary.8.tgz#c850ca1cd7f6fbbc24c394c05be61d31683bf600"
integrity sha512-JZETW+8ySo5GPYIiGQBkUG4r7sgaCB+avL26OrRO+BjQY5q59Rl2wMLpVBE5KzOntIiELHm4sKks/wBcHCc4iQ==
"@next/swc-win32-ia32-msvc@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.1-canary.6.tgz#a747ca8a3dcf993c31be913d0d40ff7e8d9ee4f6"
integrity sha512-G/zc/R6D2zpKLM3xpl0zoxmoH2P1InMVxlY/tRo4M5+0w3QINVNlZUwVfiMLDS5zoSwhP6mwu0IkuapXuwUpqw==
"@next/swc-win32-ia32-msvc@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.1-canary.8.tgz#dc6dc36b6cbaacddc80823a7e92ba3c1d52b560c"
integrity sha512-1180Kc/n2BUVuroZgo2AaaBpxL9ubblsBK/BQUJH1LjLyVlH/34Hn5VceskKM3BtQQWwrdKKAI0r+7gvyhEZbw==
"@next/swc-win32-x64-msvc@12.1.1-canary.6":
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.1-canary.6.tgz#40398f810e75b0ad9bec55f0eb6c333c87d0554b"
integrity sha512-Z4iOJEpod3RWBHT9EnrJCnFSyCaZS0EK/VHxJDxjYehV3EZoRgEhmxREOFMZPShy70FFBZKd66DjzT4ewbjJzQ==
"@next/swc-win32-x64-msvc@12.1.1-canary.8":
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.1-canary.8.tgz#84973a757cbabcfa3aefbdc13348955c9aa11baf"
integrity sha512-iBg/+D0l5k2EHll5lhPvx+TO8Ymipr/D6KTCxzi9nrfTBTH2ZNW4rJNzvonqfIA9NJDbv7Cyx+zj25xP3RwmTg==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@ -1365,72 +1365,71 @@
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz#be3e914e84eacf16dbebd311c0d0b44aa1174c64"
integrity sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw==
"@sentry/core@6.18.1":
version "6.18.1"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.18.1.tgz#6d09c4f59b30b62d5d288b5f3f3af56f1f7e6336"
integrity sha512-9V8Q+3Asi+3RL67CSIMMZ9mjMsu2/hrpQszYStX7hPPpAZIlAKk2MT5B+na/r80iWKhy+3Ts6aDFF218QtnsVw==
"@sentry/core@6.18.2":
version "6.18.2"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.18.2.tgz#d27619b7b4a4b90e2cfdc254d40ee9d630b251b9"
integrity sha512-r5ad/gq5S/JHc9sd5CUhZQT9ojQ+f+thk/AoGeGawX/8HURZYAgIqD565d6FK0VsZEDkdRMl58z1Qon20h3y1g==
dependencies:
"@sentry/hub" "6.18.1"
"@sentry/minimal" "6.18.1"
"@sentry/types" "6.18.1"
"@sentry/utils" "6.18.1"
"@sentry/hub" "6.18.2"
"@sentry/minimal" "6.18.2"
"@sentry/types" "6.18.2"
"@sentry/utils" "6.18.2"
tslib "^1.9.3"
"@sentry/hub@6.18.1":
version "6.18.1"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.18.1.tgz#fcfb8cb84515efefaf4e48472305ea5a71455abb"
integrity sha512-+zGzgc/xX3an/nKA3ELMn9YD9VmqbNaNwWZ5/SjNUvzsYHh2UNZ7YzT8WawQsRVOXLljyCKxkWpFB4EchiYGbw==
"@sentry/hub@6.18.2":
version "6.18.2"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.18.2.tgz#fdb8536f61899fd48f3d1b49a6957348ad729ec5"
integrity sha512-d0AugekMkbnN12b4EXMjseJxtLPc9S20DGobCPUb4oAQT6S2oDQEj1jwP6PQ5vtgyy+GMYWxBMgqAQ4pjVYISQ==
dependencies:
"@sentry/types" "6.18.1"
"@sentry/utils" "6.18.1"
"@sentry/types" "6.18.2"
"@sentry/utils" "6.18.2"
tslib "^1.9.3"
"@sentry/minimal@6.18.1":
version "6.18.1"
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.18.1.tgz#eac73d2262589930aa0bb33e0e12380ac5b766a9"
integrity sha512-dm+0MuasWNi/LASvHX+09oCo8IBZY5WpMK8qXvQMnwQ9FVfklrjcfEI3666WORDCmeUhDCSeL2MbjPDm+AmPLg==
"@sentry/minimal@6.18.2":
version "6.18.2"
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.18.2.tgz#581c2fc030b9c89f1fcdc3e4855b91ce6c95db56"
integrity sha512-n7KYuo34W2LxE+3dnZ47of7XHuORINCnXq66XH72eoj67tf0XeWbIhEJrYGmoLRyRfoCYYrBLWiDl/uTjLzrzQ==
dependencies:
"@sentry/hub" "6.18.1"
"@sentry/types" "6.18.1"
"@sentry/hub" "6.18.2"
"@sentry/types" "6.18.2"
tslib "^1.9.3"
"@sentry/node@^6.18.1":
version "6.18.1"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.18.1.tgz#8eddc80226bda77dd91100eb522e1e7d88963461"
integrity sha512-aTb2gwfZUq0lGDRGH5zNOYDfFMOQZu6E0QcAsvH2ZBcEj3rUWZz3r25COFrHmfzHLUV1KcF2AmnWo1QU1jmm0g==
"@sentry/node@^6.18.2":
version "6.18.2"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.18.2.tgz#0d3a294ad89434b108f79da5c4d9fcde4f251993"
integrity sha512-1S+44c09n3KVpCYjwOfnA9jKvnpPegpQWM81Nu5J6ToGx+ZiddMq6B9GRXUnFfZ7Z6fJHZzFtySasQC7KqkQoA==
dependencies:
"@sentry/core" "6.18.1"
"@sentry/hub" "6.18.1"
"@sentry/tracing" "6.18.1"
"@sentry/types" "6.18.1"
"@sentry/utils" "6.18.1"
"@sentry/core" "6.18.2"
"@sentry/hub" "6.18.2"
"@sentry/types" "6.18.2"
"@sentry/utils" "6.18.2"
cookie "^0.4.1"
https-proxy-agent "^5.0.0"
lru_map "^0.3.3"
tslib "^1.9.3"
"@sentry/tracing@6.18.1", "@sentry/tracing@^6.18.1":
version "6.18.1"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.18.1.tgz#7cc54b328dd051102900ade53e907e7441426f83"
integrity sha512-OxozmSfxGx246Ae1XhO01I7ZWxO3briwMBh55E5KyjQb8fuS9gVE7Uy8ZRs5hhNjDutFAU7nMtC0zipfVxP6fg==
"@sentry/tracing@^6.18.2":
version "6.18.2"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.18.2.tgz#163ecf0042aeb300c12952a91784fda6630085ef"
integrity sha512-hg6NLqrqJ5sUPTyWEQ2RqdnhQVnyLtx8II0IyWxQLDWD8UCe3Mu6G7mroDtakPWcP+lWz6OnKfMEfuhMcxR8fw==
dependencies:
"@sentry/hub" "6.18.1"
"@sentry/minimal" "6.18.1"
"@sentry/types" "6.18.1"
"@sentry/utils" "6.18.1"
"@sentry/hub" "6.18.2"
"@sentry/minimal" "6.18.2"
"@sentry/types" "6.18.2"
"@sentry/utils" "6.18.2"
tslib "^1.9.3"
"@sentry/types@6.18.1":
version "6.18.1"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.18.1.tgz#e2de38dd0da8096a5d22f8effc6756c919266ede"
integrity sha512-wp741NoBKnXE/4T9L723sWJ8EcNMxeTIT1smgNJOfbPwrsDICoYmGEt6JFa05XHpWBGI66WuNvnDjoHVeh6zhA==
"@sentry/types@6.18.2":
version "6.18.2"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.18.2.tgz#f528fec8b75c19d5a6976004e71703184c6cf7be"
integrity sha512-WzpJf/Q5aORTzrSwer/As1NlO90dBAQpaHV2ikDDKqOyMWEgjKb5/4gh59p9gH8JMMnLetP1AvQel0fOj5UnUw==
"@sentry/utils@6.18.1":
version "6.18.1"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.18.1.tgz#1aa819502b042540612f4db7bcb86c7b176f5a6b"
integrity sha512-IFZmuvA+c5lDGlZEri13JSyUP0BHelzY0S4dcKxAzskPW+BtBdQDgYGV90iED1y+IRMLawWb34GF7HyJSouN1Q==
"@sentry/utils@6.18.2":
version "6.18.2"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.18.2.tgz#c572a3ff49113e7dc4c97db1a18d117f199b9fff"
integrity sha512-EC619jesknyu4xpwud5WC/5odYLz6JUy7OSFy5405PpdGeh/m8XUvuJAx4zDx0Iz/Mlk0S1Md+ZcQwqkv39dkw==
dependencies:
"@sentry/types" "6.18.1"
"@sentry/types" "6.18.2"
tslib "^1.9.3"
"@stitches/react@^1.2.7":
@ -1717,15 +1716,15 @@
semver "^7.3.5"
tsutils "^3.21.0"
"@typescript-eslint/parser@5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.0.0.tgz#50d1be2e0def82d73e863cceba74aeeac9973592"
integrity sha512-B6D5rmmQ14I1fdzs71eL3DAuvnPHTY/t7rQABrL9BLnx/H51Un8ox1xqYAchs0/V2trcoyxB1lMJLlrwrJCDgw==
"@typescript-eslint/parser@5.10.1":
version "5.10.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.1.tgz#4ce9633cc33fc70bc13786cb793c1a76fe5ad6bd"
integrity sha512-GReo3tjNBwR5RnRO0K2wDIDN31cM3MmDtgyQ85oAxAmC5K3j/g85IjP+cDfcqDsDDBf1HNKQAD0WqOYL8jXqUA==
dependencies:
"@typescript-eslint/scope-manager" "5.0.0"
"@typescript-eslint/types" "5.0.0"
"@typescript-eslint/typescript-estree" "5.0.0"
debug "^4.3.1"
"@typescript-eslint/scope-manager" "5.10.1"
"@typescript-eslint/types" "5.10.1"
"@typescript-eslint/typescript-estree" "5.10.1"
debug "^4.3.2"
"@typescript-eslint/parser@^5.14.0":
version "5.14.0"
@ -1737,13 +1736,13 @@
"@typescript-eslint/typescript-estree" "5.14.0"
debug "^4.3.2"
"@typescript-eslint/scope-manager@5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.0.0.tgz#aea0fb0e2480c1169a02e89d9005ac3f2835713f"
integrity sha512-5RFjdA/ain/MDUHYXdF173btOKncIrLuBmA9s6FJhzDrRAyVSA+70BHg0/MW6TE+UiKVyRtX91XpVS0gVNwVDQ==
"@typescript-eslint/scope-manager@5.10.1":
version "5.10.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz#f0539c73804d2423506db2475352a4dec36cd809"
integrity sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg==
dependencies:
"@typescript-eslint/types" "5.0.0"
"@typescript-eslint/visitor-keys" "5.0.0"
"@typescript-eslint/types" "5.10.1"
"@typescript-eslint/visitor-keys" "5.10.1"
"@typescript-eslint/scope-manager@5.14.0":
version "5.14.0"
@ -1762,26 +1761,26 @@
debug "^4.3.2"
tsutils "^3.21.0"
"@typescript-eslint/types@5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.0.0.tgz#25d93f6d269b2d25fdc51a0407eb81ccba60eb0f"
integrity sha512-dU/pKBUpehdEqYuvkojmlv0FtHuZnLXFBn16zsDmlFF3LXkOpkAQ2vrKc3BidIIve9EMH2zfTlxqw9XM0fFN5w==
"@typescript-eslint/types@5.10.1":
version "5.10.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.1.tgz#dca9bd4cb8c067fc85304a31f38ec4766ba2d1ea"
integrity sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q==
"@typescript-eslint/types@5.14.0":
version "5.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.14.0.tgz#96317cf116cea4befabc0defef371a1013f8ab11"
integrity sha512-BR6Y9eE9360LNnW3eEUqAg6HxS9Q35kSIs4rp4vNHRdfg0s+/PgHgskvu5DFTM7G5VKAVjuyaN476LCPrdA7Mw==
"@typescript-eslint/typescript-estree@5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.0.0.tgz#bc20f413c6e572c7309dbe5fa3be027984952af3"
integrity sha512-V/6w+PPQMhinWKSn+fCiX5jwvd1vRBm7AX7SJQXEGQtwtBvjMPjaU3YTQ1ik2UF1u96X7tsB96HMnulG3eLi9Q==
"@typescript-eslint/typescript-estree@5.10.1":
version "5.10.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz#b268e67be0553f8790ba3fe87113282977adda15"
integrity sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ==
dependencies:
"@typescript-eslint/types" "5.0.0"
"@typescript-eslint/visitor-keys" "5.0.0"
debug "^4.3.1"
globby "^11.0.3"
is-glob "^4.0.1"
"@typescript-eslint/types" "5.10.1"
"@typescript-eslint/visitor-keys" "5.10.1"
debug "^4.3.2"
globby "^11.0.4"
is-glob "^4.0.3"
semver "^7.3.5"
tsutils "^3.21.0"
@ -1810,12 +1809,12 @@
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
"@typescript-eslint/visitor-keys@5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.0.0.tgz#b789f7cd105e59bee5c0983a353942a5a48f56df"
integrity sha512-yRyd2++o/IrJdyHuYMxyFyBhU762MRHQ/bAGQeTnN3pGikfh+nEmM61XTqaDH1XDp53afZ+waXrk0ZvenoZ6xw==
"@typescript-eslint/visitor-keys@5.10.1":
version "5.10.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz#29102de692f59d7d34ecc457ed59ab5fc558010b"
integrity sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ==
dependencies:
"@typescript-eslint/types" "5.0.0"
"@typescript-eslint/types" "5.10.1"
eslint-visitor-keys "^3.0.0"
"@typescript-eslint/visitor-keys@5.14.0":
@ -2113,9 +2112,9 @@ camelcase@^6.2.0:
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-lite@^1.0.30001283, caniuse-lite@^1.0.30001313:
version "1.0.30001313"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001313.tgz#a380b079db91621e1b7120895874e2fd62ed2e2f"
integrity sha512-rI1UN0koZUiKINjysQDuRi2VeSCce3bYJNmDcj3PIKREiAmjakugBul1QSkg/fPrlULYl6oWfGg3PbgOSY9X4Q==
version "1.0.30001314"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001314.tgz#65c7f9fb7e4594fca0a333bec1d8939662377596"
integrity sha512-0zaSO+TnCHtHJIbpLroX7nsD+vYuOVjl3uzFbJO1wMVbuveJA0RK2WcQA9ZUIOiO0/ArMiMgHJLxfEZhQiC0kw==
ccount@^1.0.0:
version "1.1.0"
@ -2408,7 +2407,7 @@ date-fns@^2.28.0:
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3:
debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3:
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
@ -2545,9 +2544,9 @@ eastasianwidth@^0.2.0:
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
electron-to-chromium@^1.4.76:
version "1.4.76"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.76.tgz#a0494baedaf51094b1c172999919becd9975a934"
integrity sha512-3Vftv7cenJtQb+k00McEBZ2vVmZ/x+HEF7pcZONZIkOsESqAqVuACmBxMv0JhzX7u0YltU0vSqRqgBSTAhFUjA==
version "1.4.78"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.78.tgz#7a1cf853efafde2c4cf6e86facf3e5792d3541a5"
integrity sha512-o61+D/Lx7j/E0LIin/efOqeHpXhwi1TaQco9vUcRmr91m25SfZY6L5hWJDv/r+6kNjboFKgBw1LbfM0lbhuK6Q==
emoji-regex@^8.0.0:
version "8.0.0"
@ -2644,14 +2643,14 @@ escape-string-regexp@^5.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
eslint-config-next@12.1.1-canary.6:
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.1-canary.6.tgz#2948acca0bc6c7daa28a5f4f334b2e421e09a804"
integrity sha512-AP0/W1C9rxcBVsf6V1L07QUnkRf6Ws/VzSaoWMGNrd22BR0vQ5v4faSba1tHMtgu0xBXnDojnIwSx9ryefDEOg==
eslint-config-next@12.1.1-canary.8:
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.1-canary.8.tgz#b8ec6e0b42ce81cc830a24f80d5acb9fc509da5b"
integrity sha512-glkfC2yB7+0flZLryTb7GlX1KFy35RAYza4jFXh67a6gH3PG7yElHfK8OY4p3OP7dw3BKtcromhpaVEWYSJ3ZQ==
dependencies:
"@next/eslint-plugin-next" "12.1.1-canary.6"
"@next/eslint-plugin-next" "12.1.1-canary.8"
"@rushstack/eslint-patch" "1.0.8"
"@typescript-eslint/parser" "5.0.0"
"@typescript-eslint/parser" "5.10.1"
eslint-import-resolver-node "0.3.4"
eslint-import-resolver-typescript "2.4.0"
eslint-plugin-import "2.25.2"
@ -3228,7 +3227,7 @@ globals@^13.6.0, globals@^13.9.0:
dependencies:
type-fest "^0.20.2"
globby@^11.0.3, globby@^11.0.4:
globby@^11.0.4:
version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@ -3820,16 +3819,16 @@ lint-staged@^12.3.5:
yaml "^1.10.2"
listr2@^4.0.1:
version "4.0.4"
resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.4.tgz#d098a1c419284fb26e184b5d5889b235e8912245"
integrity sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg==
version "4.0.5"
resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5"
integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==
dependencies:
cli-truncate "^2.1.0"
colorette "^2.0.16"
log-update "^4.0.0"
p-map "^4.0.0"
rfdc "^1.3.0"
rxjs "^7.5.4"
rxjs "^7.5.5"
through "^2.3.8"
wrap-ansi "^7.0.0"
@ -4618,29 +4617,29 @@ next-transpile-modules@^9.0.0:
enhanced-resolve "^5.7.0"
escalade "^3.1.1"
next@12.1.1-canary.6:
version "12.1.1-canary.6"
resolved "https://registry.yarnpkg.com/next/-/next-12.1.1-canary.6.tgz#9b4c6ee392e5dc802ef6ad7c576747873b16e0ab"
integrity sha512-aBNdKnu56n7VmDy4V3r+1mbn4Rcq0yfe4PkfZWkANtdNxnsnchAPWkL9NRzyVbIYSIgNX+QSLQWujMFt7BsXVA==
next@12.1.1-canary.8:
version "12.1.1-canary.8"
resolved "https://registry.yarnpkg.com/next/-/next-12.1.1-canary.8.tgz#498541a504050825875981d58f2757d5d1165942"
integrity sha512-UHd5sHxNSQcjGlyblve0wC/XHG/PvLdfOAvTO4Kg4WMl6NIH1ZgZGXWOAm1tba5jynaBrdIyErurs4+Mhhjf6w==
dependencies:
"@next/env" "12.1.1-canary.6"
"@next/env" "12.1.1-canary.8"
caniuse-lite "^1.0.30001283"
postcss "8.4.5"
styled-jsx "5.0.0"
use-subscription "1.5.1"
optionalDependencies:
"@next/swc-android-arm-eabi" "12.1.1-canary.6"
"@next/swc-android-arm64" "12.1.1-canary.6"
"@next/swc-darwin-arm64" "12.1.1-canary.6"
"@next/swc-darwin-x64" "12.1.1-canary.6"
"@next/swc-linux-arm-gnueabihf" "12.1.1-canary.6"
"@next/swc-linux-arm64-gnu" "12.1.1-canary.6"
"@next/swc-linux-arm64-musl" "12.1.1-canary.6"
"@next/swc-linux-x64-gnu" "12.1.1-canary.6"
"@next/swc-linux-x64-musl" "12.1.1-canary.6"
"@next/swc-win32-arm64-msvc" "12.1.1-canary.6"
"@next/swc-win32-ia32-msvc" "12.1.1-canary.6"
"@next/swc-win32-x64-msvc" "12.1.1-canary.6"
"@next/swc-android-arm-eabi" "12.1.1-canary.8"
"@next/swc-android-arm64" "12.1.1-canary.8"
"@next/swc-darwin-arm64" "12.1.1-canary.8"
"@next/swc-darwin-x64" "12.1.1-canary.8"
"@next/swc-linux-arm-gnueabihf" "12.1.1-canary.8"
"@next/swc-linux-arm64-gnu" "12.1.1-canary.8"
"@next/swc-linux-arm64-musl" "12.1.1-canary.8"
"@next/swc-linux-x64-gnu" "12.1.1-canary.8"
"@next/swc-linux-x64-musl" "12.1.1-canary.8"
"@next/swc-win32-arm64-msvc" "12.1.1-canary.8"
"@next/swc-win32-ia32-msvc" "12.1.1-canary.8"
"@next/swc-win32-x64-msvc" "12.1.1-canary.8"
node-abort-controller@^3.0.1:
version "3.0.1"
@ -5345,10 +5344,10 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
rxjs@^7.5.4:
version "7.5.4"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d"
integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==
rxjs@^7.5.5:
version "7.5.5"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f"
integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==
dependencies:
tslib "^2.1.0"
@ -5928,9 +5927,9 @@ unified@9.2.0:
vfile "^4.0.0"
unified@^10.0.0:
version "10.1.1"
resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.1.tgz#345e349e3ab353ab612878338eb9d57b4dea1d46"
integrity sha512-v4ky1+6BN9X3pQrOdkFIPWAaeDsHPE1svRDxq7YpTc2plkIqFMwukfqM+l0ewpP9EfwARlt9pPFAeWYhHm8X9w==
version "10.1.2"
resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df"
integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==
dependencies:
"@types/unist" "^2.0.0"
bail "^2.0.0"