1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-04-26 09:25:22 -04:00

use safer method of concatenating absolute URLs

This commit is contained in:
Jake Jarvis 2022-04-07 15:29:15 -04:00
parent 1d3727cca0
commit a8c1a3ba3c
Signed by: jake
GPG Key ID: 2B0C9CF251E69A39
9 changed files with 136 additions and 123 deletions

View File

@ -1,5 +1,6 @@
import { useRouter } from "next/router";
import NextLink from "next/link";
import urlJoin from "url-join";
import { styled } from "../../lib/styles/stitches.config";
import { baseUrl } from "../../lib/config";
import type { ComponentProps } from "react";
@ -24,7 +25,7 @@ export type PageTitleProps = ComponentProps<typeof Title>;
const PageTitle = ({ children, ...rest }: PageTitleProps) => {
const router = useRouter();
const canonical = `${baseUrl}${router.pathname}/`;
const canonical = urlJoin(baseUrl, router.pathname, "/");
return (
<Title {...rest}>

View File

@ -1,3 +1,7 @@
import urlJoin from "url-join";
import type { StaticImageData } from "next/image";
import type { DefaultSeoProps, SocialProfileJsonLdProps, ArticleJsonLdProps } from "next-seo";
import * as config from ".";
// favicons (some used here, some re-exported and used elsewhere)
@ -10,9 +14,6 @@ import maskable512Png from "../../public/static/favicons/maskable-512x512.png";
import maskable192Png from "../../public/static/favicons/maskable-192x192.png";
import meJpg from "../../public/static/images/me.jpg";
import type { StaticImageData } from "next/image";
import type { DefaultSeoProps, SocialProfileJsonLdProps, ArticleJsonLdProps } from "next-seo";
// Most of this file simply takes the data already defined in ./config.js and translates it into objects that are
// compatible with next-seo's props:
// https://github.com/garmeeh/next-seo#default-seo-configuration
@ -27,7 +28,7 @@ export const defaultSeo: DefaultSeoProps = {
type: "website",
images: [
{
url: `${config.baseUrl}${meJpg.src}`,
url: urlJoin(config.baseUrl, meJpg.src),
alt: `${config.siteName} ${config.shortDescription}`,
},
],
@ -112,9 +113,9 @@ export const defaultSeo: DefaultSeoProps = {
export const socialProfileJsonLd: SocialProfileJsonLdProps = {
type: "Person",
name: config.authorName,
url: `${config.baseUrl}/`,
url: urlJoin(config.baseUrl, "/"),
sameAs: [
`${config.baseUrl}/`,
urlJoin(config.baseUrl, "/"),
`https://github.com/${config.authorSocial?.github}`,
`https://keybase.io/${config.authorSocial?.keybase}`,
`https://twitter.com/${config.authorSocial?.twitter}`,
@ -130,7 +131,7 @@ export const socialProfileJsonLd: SocialProfileJsonLdProps = {
export const articleJsonLd: Pick<ArticleJsonLdProps, "authorName" | "publisherName" | "publisherLogo"> = {
authorName: [config.authorName],
publisherName: config.siteName,
publisherLogo: `${config.baseUrl}${meJpg.src}`,
publisherLogo: urlJoin(config.baseUrl, meJpg.src),
};
// Re-export icons to use their static image data elsewhere

View File

@ -1,4 +1,5 @@
import { Feed } from "feed";
import urlJoin from "url-join";
import { getAllNotes } from "./parse-notes";
import * as config from "../config";
import { RELEASE_DATE } from "../config/constants";
@ -17,20 +18,20 @@ export const buildFeed = (
// https://github.com/jpmonette/feed#example
const feed = new Feed({
id: `${config.baseUrl}/`,
link: `${config.baseUrl}/`,
id: urlJoin(config.baseUrl, "/"),
link: urlJoin(config.baseUrl, "/"),
title: config.siteName,
description: config.longDescription,
copyright: "https://creativecommons.org/licenses/by/4.0/",
updated: new Date(RELEASE_DATE),
image: `${config.baseUrl}${favicons.meJpg.src}`,
image: urlJoin(config.baseUrl, favicons.meJpg.src),
feedLinks: {
rss: `${config.baseUrl}/feed.xml`,
atom: `${config.baseUrl}/feed.atom`,
rss: urlJoin(config.baseUrl, "feed.xml"),
atom: urlJoin(config.baseUrl, "feed.atom"),
},
author: {
name: config.authorName,
link: `${config.baseUrl}/`,
link: urlJoin(config.baseUrl, "/"),
email: config.authorEmail,
},
});
@ -43,11 +44,11 @@ export const buildFeed = (
link: note.permalink,
title: note.title,
description: note.description,
image: note.image ? `${config.baseUrl}${note.image}` : "",
image: note.image ? urlJoin(config.baseUrl, note.image) : "",
author: [
{
name: config.authorName,
link: config.baseUrl,
link: urlJoin(config.baseUrl, "/"),
},
],
date: new Date(note.date),

View File

@ -3,6 +3,7 @@ import path from "path";
import { renderToStaticMarkup } from "react-dom/server";
import matter from "gray-matter";
import { serialize } from "next-mdx-remote/serialize";
import urlJoin from "url-join";
import { minify } from "terser";
import { compiler } from "markdown-to-jsx";
import removeMarkdown from "remove-markdown";
@ -54,7 +55,7 @@ export const getNoteData = (slug: string): Omit<NoteType, "source"> & { content:
// parsed markdown title:
htmlTitle,
slug,
permalink: `${baseUrl}/notes/${slug}/`,
permalink: urlJoin(baseUrl, "notes", slug, "/"),
date: new Date(data.date).toISOString(), // validate/normalize the date string provided from front matter
readingMins: Math.ceil(readingTime(content).minutes),
},

View File

@ -41,7 +41,7 @@
"gray-matter": "^4.0.3",
"is-absolute-url": "^4.0.1",
"markdown-to-jsx": "^7.1.7",
"next": "12.1.5-canary.3",
"next": "12.1.5-canary.4",
"next-compose-plugins": "^2.2.1",
"next-mdx-remote": "4.0.1",
"next-seo": "^5.4.0",
@ -68,16 +68,17 @@
"sanitize-html": "^2.7.0",
"simple-icons": "^6.17.0",
"stitches-normalize": "^2.0.0",
"swr": "^1.2.2"
"swr": "^1.2.2",
"url-join": "^5.0.0"
},
"devDependencies": {
"@jakejarvis/eslint-config": "*",
"@next/bundle-analyzer": "12.1.5-canary.3",
"@next/bundle-analyzer": "12.1.5-canary.4",
"@svgr/webpack": "^6.2.1",
"@types/node": "*",
"@types/prop-types": "^15.7.4",
"@types/react": "^17.0.43",
"@types/react-dom": "^17.0.14",
"@types/prop-types": "^15.7.5",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"@types/react-is": "^17.0.3",
"@types/remove-markdown": "^0.3.1",
"@types/sanitize-html": "^2.6.2",
@ -85,7 +86,7 @@
"@typescript-eslint/parser": "^5.18.0",
"cross-env": "^7.0.3",
"eslint": "~8.12.0",
"eslint-config-next": "12.1.5-canary.3",
"eslint-config-next": "12.1.5-canary.4",
"eslint-config-prettier": "~8.5.0",
"eslint-plugin-mdx": "~1.17.0",
"eslint-plugin-prettier": "~4.0.0",

View File

@ -2,6 +2,7 @@ import { useEffect } from "react";
import { useRouter } from "next/router";
import { DefaultSeo, SocialProfileJsonLd } from "next-seo";
import * as Fathom from "fathom-client";
import urlJoin from "url-join";
import { ThemeProvider } from "../contexts/ThemeContext";
import Layout from "../components/Layout";
import * as config from "../lib/config";
@ -24,7 +25,7 @@ const App = ({ Component, pageProps }: AppProps) => {
// get this page's URL with full domain, and hack around query parameters and anchors
// NOTE: this assumes trailing slashes are enabled in next.config.js
const canonical = `${config.baseUrl}${router.pathname === "/" ? "" : router.pathname}/`;
const canonical = urlJoin(config.baseUrl, router.pathname === "/" ? "" : router.pathname, "/");
useEffect(() => {
// https://usefathom.com/docs/integrations/next

View File

@ -1,6 +1,7 @@
import { InView } from "react-intersection-observer";
import { NextSeo, ArticleJsonLd } from "next-seo";
import { MDXRemote } from "next-mdx-remote";
import urlJoin from "url-join";
import Content from "../../components/Content";
import NoteMeta from "../../components/NoteMeta";
import Comments from "../../components/Comments";
@ -30,7 +31,7 @@ const Note = ({ frontMatter, source }: NoteType) => {
},
images: frontMatter.image && [
{
url: `${config.baseUrl}${frontMatter.image}`,
url: urlJoin(config.baseUrl, frontMatter.image),
alt: frontMatter.title,
},
],
@ -45,7 +46,7 @@ const Note = ({ frontMatter, source }: NoteType) => {
description={frontMatter.description}
datePublished={frontMatter.date}
dateModified={frontMatter.date}
images={frontMatter.image && [`${config.baseUrl}${frontMatter.image}`]}
images={frontMatter.image && [urlJoin(config.baseUrl, frontMatter.image)]}
{...articleJsonLd}
/>

View File

@ -1,4 +1,5 @@
import { getServerSideSitemap } from "next-sitemap";
import urlJoin from "url-join";
import { getAllNotes } from "../lib/helpers/parse-notes";
import { baseUrl } from "../lib/config";
import { RELEASE_DATE } from "../lib/config/constants";
@ -33,7 +34,7 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
const notes = getAllNotes();
notes.map((note) =>
pages.push({
loc: `/notes/${note.slug}/`,
loc: urlJoin("/notes/", note.slug, "/"),
// pull lastMod from front matter date
lastmod: new Date(note.date).toISOString(),
priority: 0.7,
@ -41,7 +42,7 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
);
// make all relative URLs absolute
pages.map((page) => (page.loc = `${baseUrl}${page.loc}`));
pages.map((page) => (page.loc = urlJoin(baseUrl, page.loc)));
// cache on edge for 12 hours
const { res } = context;

193
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.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-12.1.5-canary.3.tgz#5df706a80bcd018158d1a12a2d36c67b6d627cd5"
integrity sha512-nm0zGVaIIIhluXwKSciYUXapNB6dkvahzM0fMzyqnsUUZKI8u2wZHmXdqpOdnlwIJB82uiXm/bpDX31VjLO2pQ==
"@next/bundle-analyzer@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/bundle-analyzer/-/bundle-analyzer-12.1.5-canary.4.tgz#a23efebeec7e19dade55fb417df5068aecfa2efb"
integrity sha512-utgqpE6L6pwVSkqRd4OjLiw8LuX3BBiaB96CaJrZj4UWxwiyGFokWd28Z7mslpb+dLke86WLjUv/QF+MH1qDUQ==
dependencies:
webpack-bundle-analyzer "4.3.0"
"@next/env@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.5-canary.3.tgz#ecafaf1e59ce0232245b1d540664a4188e856e66"
integrity sha512-8oxgSPYaoGY1AyCHKJIsyPoWM+LEimnxLnw0q5yfT+SEY7E8/vCcQRmZtn9SgijIc0t0wDHlYtVD0L9DCB8usg==
"@next/env@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.5-canary.4.tgz#9b5e5108e2124edcddd5a7f9ddda7d244bd96c68"
integrity sha512-cXMjrodrFcQE38eELp6n2Q8zSnLiHVX88+CuW7QID2UDmillKNYW/OKYVjcB981wWz/OFM0UGIdf5KwA6IeDeA==
"@next/eslint-plugin-next@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.5-canary.3.tgz#4675c5e17e41bdc9b2a29e21ae439eba8c314a2f"
integrity sha512-rO3vHQmsIxdL4e6hYSeDw5NK713DUCHc022yhN3/NVpPceYYK1T9HYA5ikQ13tWNmXVeb+FP7nfAZeBWBcdFpQ==
"@next/eslint-plugin-next@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.5-canary.4.tgz#180f14ec0a62da5842af0f4bf5bc2278e6a0c5db"
integrity sha512-Nq96LvUgHphZaZRxLyCaobhiTorZNG8zh0FrslikP2NMPgxT6MCSiucO4tER1zP0YghZzQYpLcjfIQbJ0crQNw==
dependencies:
glob "7.1.7"
"@next/swc-android-arm-eabi@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.5-canary.3.tgz#644e7b5481db40c54553e595516c29b5962a467a"
integrity sha512-EI7L9+1r29AHSUMdv+Kd9uqUQ8X+MeNwkmuDaEqCS36iHiKXmTL+t4gnMMCYGU0T07yKwku3RydDhpk4NzXyYw==
"@next/swc-android-arm-eabi@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.5-canary.4.tgz#9e25cd6abadbd9b0edb50cabe2daaab4061afea4"
integrity sha512-tt99U4bSgqPWbSsp0oyzol0fxwfLlsjlF9oSdwGlPOR2nQ91QpGtUsT5uyXlXyPBhjaCT5OS739GsT5IHoAEQg==
"@next/swc-android-arm64@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.5-canary.3.tgz#35113acce726252c3a441b238674bb781d6ab96e"
integrity sha512-1C0UP4CNDfunsdjJ1h8ByhO5Rda+CJwRI4/3m8lnYp1QekCi5l5GB3uXRTA584fu9iQUV0m4AwqJjbJy2XRZGw==
"@next/swc-android-arm64@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.5-canary.4.tgz#93876e17fc4034ae15f74e111f77aab4fdbcecdf"
integrity sha512-LEX7por70dlKigcBWj8OfzU36pVTJ3C6r4Hrr3kKrS6zEstCJlUmUp9CLOUT4aJ1gDNym0p2AYwvsXShp/cxWA==
"@next/swc-darwin-arm64@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.5-canary.3.tgz#f74e4dd84e689d77375211e5d61f04658db848fe"
integrity sha512-0/tGblqyomguI0zcSPE+dThYAUzGt8eEiHiq227dGeBI3L/DJli7O9uzY2N1PR7qXMuSI6dioc5dqRtAXT886Q==
"@next/swc-darwin-arm64@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.5-canary.4.tgz#1024cf80c4c76e0385e0e19dd775a2798e82f7ad"
integrity sha512-ddXvdzo6HrK8rU+A5AGy7iC0yjVi0Pzv9LjzqXmzoZDlKEB8PPnjop+HAsQJf/Kzk1Yw9CH7eNjQsMbi8HhX0w==
"@next/swc-darwin-x64@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.5-canary.3.tgz#9f8263dc0ffdbaedaf25b7d43fe431356c48615c"
integrity sha512-cD/wT73vnx8BpgGTH0qpN8N+MAWjQjLuzhjK68uFlBNQ4YBB9/CiJSlp+bBjLRllw3tMcFmDNKqpn/hLE2sjGg==
"@next/swc-darwin-x64@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.5-canary.4.tgz#56c536203c574909559a06e9e18695b2a876841d"
integrity sha512-AFN9Go6KF7kApDnxcwvMunPxrfMZMIEr8ud/GElpl/aBpEgoFj/MGol33xwBQc1NZGrY+7IjOeVCGe5jEqya/A==
"@next/swc-linux-arm-gnueabihf@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.5-canary.3.tgz#b284aae77c29d21bd688a31055165096a9533b6e"
integrity sha512-9lWDlhrXJLY2pku/qP8MTqsLRO7eR62kbr+N5UvKXuUCuiky3DoSBL0ppWSBlKTS7mftZjy8AmX5GKPq3KQOCQ==
"@next/swc-linux-arm-gnueabihf@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.5-canary.4.tgz#c30c196392b4413d2a8c7e5e8b4b7b21eb32aa68"
integrity sha512-GCzrV7K3sITb1nxlnTfI901firrXCOa/7uKoiUhMPPxP+xJVNu0EjwelgpobWfYgEBHqsa/uKBYURnKrh0/fZQ==
"@next/swc-linux-arm64-gnu@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.5-canary.3.tgz#ce07d5e8d4907e8f4ee10a4593cf2efe0e52144e"
integrity sha512-BhVlu7WYQYqadtex5wQdNE2WPvnkZjkvt6ZDD+lr9BnddxjUqnG0cpSCwyaYMUwib2efRslCaDAElkfTwWH6Gw==
"@next/swc-linux-arm64-gnu@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.5-canary.4.tgz#f224cf0568ed56fe3f031f347c48bbcd205bd64b"
integrity sha512-LFxRvADEjSTIN+j+j5kuzmzZqloWo8VZi4Yl6/dooa7iBkRlViC28wtr6is1rqwrCp0J4PxL5Z6oGCPVJCez1Q==
"@next/swc-linux-arm64-musl@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.5-canary.3.tgz#2e13a8a0b93dbf5618c5b82c65b6673dcd5d09d0"
integrity sha512-iULGOQHYEgcaXE4aXuH7/KlOk2SPBUNIQC2HlqS3qMoW8T8I+v4cIz6B6S1uywXjaJD/RGKiDNsNX8w5gUGIZA==
"@next/swc-linux-arm64-musl@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.5-canary.4.tgz#e16a7aa069c494bd39a20e1646a87db1bedc551f"
integrity sha512-5/YLEVy8vuSooulMq5V0D1zH9/wkU3beJ5yrmAOL8gLYQAo/wHfDoR3ORznMF2uZsMX6pQ6NeMFycL9GSwy7lg==
"@next/swc-linux-x64-gnu@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.5-canary.3.tgz#9ff8cc29afdd0a2297d0e2fd9d37274209d5b4cb"
integrity sha512-1FztGThf+Q6sB+jDnwsFB25kdKFSDSQy9OmnYguf+KbDcDoDDcTLsulGhZ7F2/eIOI6/QW6OM3q2OdI3JseYpg==
"@next/swc-linux-x64-gnu@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.5-canary.4.tgz#773627dbc681130021345b8fe3c89c58d61420be"
integrity sha512-Hy2poAkPya0dRhfeqeCeBcCSoYJbc3llwrTLEDyci0QrrrengxpQXghR2iNO/E+ycz2xVGqPfuMel3JCGTwRWA==
"@next/swc-linux-x64-musl@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.5-canary.3.tgz#b0c65d2e0f08ca2caee60d920cf2459495393e50"
integrity sha512-XPEbvsa9uZc8gBI1ytNrxRAw8PhazckeYtDMggeqDTSQznCp9ba+dZ7CzCHHpf9X0HVRqQdF1MZ7Y52ji3PH8Q==
"@next/swc-linux-x64-musl@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.5-canary.4.tgz#373af8da463821081070023d790d4f98565a8b32"
integrity sha512-CP5uYJqG/0bWYIG+IuDXGAZ6e5LLrMXEyg0C/6XM/ATM5GrdF0GrVnw32KlzBKmMrEk1/BE0z+mxO0DbN3IfXw==
"@next/swc-win32-arm64-msvc@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.5-canary.3.tgz#52852c338fa1414bdca0cb12cd9d0f4879d66c38"
integrity sha512-1ehsnGq+DB5Ncd6aUjYl9+9DR/qvbR6BwMtSwvkOx4ZrrNyzP5CxH/wYtmevc5Rb9MovN+IphYUUuQELvwsIPQ==
"@next/swc-win32-arm64-msvc@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.5-canary.4.tgz#3ca7331960140a0d387ed1b6079ecd0bd7178dc6"
integrity sha512-9orbZuIWxISoyvhf236wp8uRO9f0C0/voRZ6wb8DJNfL7n2ZTu6Rj9GXYhBbbFyidaPW44jdJ/yR7EFvAkJs/w==
"@next/swc-win32-ia32-msvc@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.5-canary.3.tgz#bce9c2d9a045d4b62cd00db79c4818339ae29dc6"
integrity sha512-5R/MLYxGNHisQOSd9vQCJL9qwGq6P9dN6k4ZtIa3z2r//bCRNPjNK7odMSasamMmzMD9e8N6k601U01K2rh4BQ==
"@next/swc-win32-ia32-msvc@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.5-canary.4.tgz#672bf5b50e686e2b824c7cbaf25920a3fce5f3f5"
integrity sha512-GJR5Q/SkHIVlBn8Lbo/HXzq/KyeXVYoHtaNOp+okYemdTAPmYLqTwH8F7+mVTKg6pzGdRXO3yUj6DM6lTSIMWQ==
"@next/swc-win32-x64-msvc@12.1.5-canary.3":
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.5-canary.3.tgz#23210738ec113bc616d32b995f430a4f436707e5"
integrity sha512-xTASNc87iWMtNdpyKgTm91Z4+1EzkQH9K2HmktkyPYtGP5ZzIbvzUQ64TzFo+XemtOrTlYsTuagpEB0fouXD6w==
"@next/swc-win32-x64-msvc@12.1.5-canary.4":
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.5-canary.4.tgz#644046929034530fd692faa8fab0cb1b418289a3"
integrity sha512-wsXqXj4g9CHagoQ78diYc44rl3Hyvsv/EPEJLoHZldnGLW5Y8jS/2rTQkN55Y5KqTVdO7HkEwp3oww22eRqYxQ==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
@ -1646,15 +1646,15 @@
resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.0.tgz#a1c3809b0ad61c62cac6d4e0c56d610c910b7654"
integrity sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==
"@types/prop-types@*", "@types/prop-types@^15.7.4":
version "15.7.4"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
"@types/prop-types@*", "@types/prop-types@^15.7.5":
version "15.7.5"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
"@types/react-dom@^17.0.14":
version "17.0.14"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f"
integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==
"@types/react-dom@^18.0.0":
version "18.0.0"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.0.tgz#b13f8d098e4b0c45df4f1ed123833143b0c71141"
integrity sha512-49897Y0UiCGmxZqpC8Blrf6meL8QUla6eb+BBhn69dTXlmuOlzkfr7HHY/O8J25e1lTUMs+YYxSlVDAaGHCOLg==
dependencies:
"@types/react" "*"
@ -1665,10 +1665,10 @@
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@>=16", "@types/react@^17.0.43":
version "17.0.43"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55"
integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==
"@types/react@*", "@types/react@>=16", "@types/react@^18.0.0":
version "18.0.0"
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.0.tgz#4be8aa3a2d04afc3ac2cc1ca43d39b0bd412890c"
integrity sha512-7+K7zEQYu7NzOwQGLR91KwWXXDzmTFODRVizJyIALf6RfLv2GDpqpknX64pvRVILXCpXi7O/pua8NGk44dLvJw==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@ -2648,12 +2648,12 @@ 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.5-canary.3:
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.5-canary.3.tgz#d2b3dee528f3308df0ef25b3f8858a55cb5923c8"
integrity sha512-UPAbCQ55owz9H8YdigpcaWIpGPYxvX/Cv98F9+3U5EXI1LUvDY7ajbYKvUFj8EMBeRDdY5BO8WrqXL8ZjgYexQ==
eslint-config-next@12.1.5-canary.4:
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.1.5-canary.4.tgz#e0b7d237fd8025b2885a79c26314b7cf2c756603"
integrity sha512-VShmyM4rnCkFGTA9Eg+pqFLTbpWxAvayWShvmc+a+IXGQCWXPgiza8T4Pq+dgIXLdm2ytyZ5IZ+vZZv01Y+4bQ==
dependencies:
"@next/eslint-plugin-next" "12.1.5-canary.3"
"@next/eslint-plugin-next" "12.1.5-canary.4"
"@rushstack/eslint-patch" "1.0.8"
"@typescript-eslint/parser" "5.10.1"
eslint-import-resolver-node "0.3.4"
@ -4626,28 +4626,28 @@ next-transpile-modules@^9.0.0:
enhanced-resolve "^5.7.0"
escalade "^3.1.1"
next@12.1.5-canary.3:
version "12.1.5-canary.3"
resolved "https://registry.yarnpkg.com/next/-/next-12.1.5-canary.3.tgz#37b83e7992c4386b99b1f7a0f08f71b949d2a6e5"
integrity sha512-up9GXlebBIR4kL7D9HnlK56Vj9IVZXLa5L8FKmNqF5oias8EqnrU2CRUjO/cinbxmmBqH780qSBFtZ6HzpoX5A==
next@12.1.5-canary.4:
version "12.1.5-canary.4"
resolved "https://registry.yarnpkg.com/next/-/next-12.1.5-canary.4.tgz#8298484d505c2b1d7f2d739f2066726ec76e90b6"
integrity sha512-A8yrJQWU+5AXeA6Obp7MB2dXyLaKxJ2vstkaQ8FR7ZYs0ldRzjySE/TArBzM2w4utjJoLP1IKuu+49gGozT7Wg==
dependencies:
"@next/env" "12.1.5-canary.3"
"@next/env" "12.1.5-canary.4"
caniuse-lite "^1.0.30001283"
postcss "8.4.5"
styled-jsx "5.0.1"
optionalDependencies:
"@next/swc-android-arm-eabi" "12.1.5-canary.3"
"@next/swc-android-arm64" "12.1.5-canary.3"
"@next/swc-darwin-arm64" "12.1.5-canary.3"
"@next/swc-darwin-x64" "12.1.5-canary.3"
"@next/swc-linux-arm-gnueabihf" "12.1.5-canary.3"
"@next/swc-linux-arm64-gnu" "12.1.5-canary.3"
"@next/swc-linux-arm64-musl" "12.1.5-canary.3"
"@next/swc-linux-x64-gnu" "12.1.5-canary.3"
"@next/swc-linux-x64-musl" "12.1.5-canary.3"
"@next/swc-win32-arm64-msvc" "12.1.5-canary.3"
"@next/swc-win32-ia32-msvc" "12.1.5-canary.3"
"@next/swc-win32-x64-msvc" "12.1.5-canary.3"
"@next/swc-android-arm-eabi" "12.1.5-canary.4"
"@next/swc-android-arm64" "12.1.5-canary.4"
"@next/swc-darwin-arm64" "12.1.5-canary.4"
"@next/swc-darwin-x64" "12.1.5-canary.4"
"@next/swc-linux-arm-gnueabihf" "12.1.5-canary.4"
"@next/swc-linux-arm64-gnu" "12.1.5-canary.4"
"@next/swc-linux-arm64-musl" "12.1.5-canary.4"
"@next/swc-linux-x64-gnu" "12.1.5-canary.4"
"@next/swc-linux-x64-musl" "12.1.5-canary.4"
"@next/swc-win32-arm64-msvc" "12.1.5-canary.4"
"@next/swc-win32-ia32-msvc" "12.1.5-canary.4"
"@next/swc-win32-x64-msvc" "12.1.5-canary.4"
node-abort-controller@^3.0.1:
version "3.0.1"
@ -6084,6 +6084,11 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
url-join@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/url-join/-/url-join-5.0.0.tgz#c2f1e5cbd95fa91082a93b58a1f42fecb4bdbcf1"
integrity sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==
use-composed-ref@^1.0.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.2.1.tgz#9bdcb5ccd894289105da2325e1210079f56bf849"