perf: avoid layout re-rendering

This commit is contained in:
Riccardo
2024-01-25 18:12:37 +01:00
parent 551bff815f
commit dbefdc49e2
15 changed files with 137 additions and 135 deletions

View File

@@ -3,9 +3,14 @@
## Next up ## Next up
- Adjust card size - Adjust card size
- Custom url shortener for links in the newsletter? - Tweak email templates
- Cron every 10 minutes: people are more likely to open the newsletter if delivered around the time when they subscribed (if cron becomes not enough, then the cost of sending all the emails might be a bigger issue) - Cron every 10 minutes: people are more likely to open the newsletter if delivered around the time when they subscribed (if cron becomes not enough, then the cost of sending all the emails might be a bigger issue)
## Some resources used
https://gradientbuttons.colorion.co/
https://codepen.io/alphardex/pen/vYEYGzp
## Commands ## Commands
Install vercel cli Install vercel cli

View File

@@ -1,7 +1,7 @@
import { Analytics } from '@vercel/analytics/react'; import { Analytics } from '@vercel/analytics/react';
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { Inter as FontSans } from 'next/font/google'; import { Inter as FontSans } from 'next/font/google';
import { Background } from '../components/custom/background/background'; import { Tiles } from '../components/custom/tiles/tiles';
import { cn } from '../utils/ui'; import { cn } from '../utils/ui';
import './globals.css'; import './globals.css';
@@ -30,9 +30,9 @@ export default function RootLayout({
fontSans.variable fontSans.variable
)} )}
> >
<Background> <Tiles>
<div style={{ zIndex: 2 }}>{children}</div> <div style={{ zIndex: 2 }}>{children}</div>
</Background> </Tiles>
<Analytics /> <Analytics />
</body> </body>
</html> </html>

View File

@@ -1,4 +1,5 @@
'use client'; 'use client';
import Link from 'next/link';
import { Card } from '../../components/custom/card'; import { Card } from '../../components/custom/card';
export default function Privacy() { export default function Privacy() {
@@ -15,12 +16,12 @@ export default function Privacy() {
the Service, You agree to the collection and use of information in the Service, You agree to the collection and use of information in
accordance with this Privacy Policy. This Privacy Policy has been accordance with this Privacy Policy. This Privacy Policy has been
created with the help of the{' '} created with the help of the{' '}
<a <Link
href='https://www.termsfeed.com/privacy-policy-generator/' href='https://www.termsfeed.com/privacy-policy-generator/'
target='_blank' target='_blank'
> >
Privacy Policy Generator Privacy Policy Generator
</a> </Link>
. .
</p> </p>
<br /> <br />
@@ -420,9 +421,13 @@ export default function Privacy() {
<ul> <ul>
<li> <li>
By visiting this page on our website:{' '} By visiting this page on our website:{' '}
<a href={'/privacy'} rel='external nofollow noopener' target='_blank'> <Link
href={'/privacy'}
rel='external nofollow noopener'
target='_blank'
>
Privacy Policy Privacy Policy
</a> </Link>
</li> </li>
</ul> </ul>
</div> </div>

View File

@@ -1,9 +0,0 @@
import { Tiles } from './tile/tiles';
type BackgroundProps = {
children: React.ReactNode;
};
export function Background({ children }: BackgroundProps) {
return <Tiles>{children}</Tiles>;
}

View File

@@ -1,3 +1,4 @@
import Link from 'next/link';
import { Button } from '../ui/button'; import { Button } from '../ui/button';
type LinkProps = { type LinkProps = {
@@ -5,10 +6,10 @@ type LinkProps = {
text: string; text: string;
}; };
export function Link({ path, text }: LinkProps) { export function CustomLink({ path, text }: LinkProps) {
return ( return (
<Button asChild> <Button asChild>
<a href={path}>{text}</a> <Link href={path}>{text}</Link>
</Button> </Button>
); );
} }

View File

@@ -1,5 +1,6 @@
import Link from 'next/link';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import { Link } from './link'; import { CustomLink } from './customLink';
const links = [{ name: 'Subscribe', path: '/' }]; const links = [{ name: 'Subscribe', path: '/' }];
@@ -11,12 +12,12 @@ function Footer() {
{pathname === '/' ? ( {pathname === '/' ? (
<p className='text-center text-xs text-gray-600'> <p className='text-center text-xs text-gray-600'>
By subscribing, you agree to our{' '} By subscribing, you agree to our{' '}
<a <Link
className='font-medium text-indigo-600 hover:text-indigo-500' className='font-medium text-indigo-600 hover:text-indigo-500'
href='/privacy' href='/privacy'
> >
Privacy Policy Privacy Policy
</a> </Link>
. .
</p> </p>
) : ( ) : (
@@ -25,11 +26,11 @@ function Footer() {
link => link =>
pathname !== link.path && pathname !== link.path &&
!(pathname === '/confirmation' && link.path === '/') && ( !(pathname === '/confirmation' && link.path === '/') && (
<Link key={link.path} path={link.path} text={link.name} /> <CustomLink key={link.path} path={link.path} text={link.name} />
) )
)} )}
{pathname === '/privacy' && ( {pathname === '/privacy' && (
<Link path='/unsubscribe' text='Unsubscribe' /> <CustomLink path='/unsubscribe' text='Unsubscribe' />
)} )}
</ul> </ul>
)} )}

View File

@@ -3,8 +3,8 @@
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { z } from 'zod'; import { z } from 'zod';
import { NewsTile, NewsTileSchema } from '../../../../utils/schemas'; import { NewsTile, NewsTileSchema } from '../../../utils/schemas';
import { Tile } from './tile'; import { Tile } from './components/tile';
type TilesProps = { type TilesProps = {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -1,4 +1,4 @@
import { Link } from '../custom/link'; import { CustomLink } from '../custom/customLink';
import { Note } from './components/note'; import { Note } from './components/note';
import Template from './template'; import Template from './template';
@@ -22,7 +22,7 @@ export default function ConfirmationTemplate(code: string) {
justifyContent: 'center' justifyContent: 'center'
}} }}
> >
<Link <CustomLink
path={`${process.env.HOME_URL}/confirmation?code=${code}`} path={`${process.env.HOME_URL}/confirmation?code=${code}`}
text='Confirm subscription' text='Confirm subscription'
/> />

View File

@@ -1,13 +0,0 @@
export const sayings = [
'hot off the press',
'straight from the oven',
"straight from the horse's mouth",
'brand spanking new',
'fresh as a daisy',
'straight out of the box',
'straight off the assembly line',
'hot out of the kitchen',
'just minted',
'freshly brewed',
'just off the production line'
];

View File

@@ -0,0 +1,13 @@
export const sayings = [
'hot off the press',
'straight from the oven',
"straight from the horse's mouth",
'brand spanking new',
'fresh as a daisy',
'straight out of the box',
'straight off the assembly line',
'hot out of the kitchen',
'just minted',
'freshly brewed',
'just off the production line'
];

View File

@@ -1,12 +1,11 @@
import { z } from 'zod'; import { z } from 'zod';
import { NewsSchema } from '../../utils/schemas'; import { NewsSchema } from '../../utils/schemas';
import { sayings } from './helpers/newsletterSayings'; import { sayings } from './helpers/sayings';
import Template from './template'; import Template from './template';
export default function NewsletterTemplate( export default function NewsletterTemplate(
stories: z.infer<typeof NewsSchema>[] stories: z.infer<typeof NewsSchema>[]
) { ) {
return { return {
subject: `What's new from the Hackernews forum?`, subject: `What's new from the Hackernews forum?`,
template: ( template: (

View File

@@ -1,4 +1,4 @@
import { Link } from '../custom/link'; import { CustomLink } from '../custom/customLink';
import { Note } from './components/note'; import { Note } from './components/note';
import Template from './template'; import Template from './template';
@@ -22,7 +22,7 @@ export default function UnsubscribeTemplate() {
justifyContent: 'center' justifyContent: 'center'
}} }}
> >
<Link path='/' text='Re-subscribe' /> <CustomLink path='/' text='Re-subscribe' />
</div> </div>
<Note> <Note>
If you have any questions or concerns, please feel free to{' '} If you have any questions or concerns, please feel free to{' '}

180
yarn.lock
View File

@@ -35,22 +35,22 @@
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@babel/runtime@^7.13.10", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.7": "@babel/runtime@^7.13.10", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.7":
version "7.23.8" version "7.23.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7"
integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==
dependencies: dependencies:
regenerator-runtime "^0.14.0" regenerator-runtime "^0.14.0"
"@commitlint/cli@^18.4.3": "@commitlint/cli@^18.4.3":
version "18.5.0" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-18.5.0.tgz#e485c29d51b66890cd93a4c7f3f1e5ed15101db2" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-18.6.0.tgz#f065e0514f3870b6dc9a3c608a78820806b46527"
integrity sha512-g/N0mJBrHcTdiccUpJknS6/ru45eIEAZyhEy9sL2ILjzK2IVNrpzlAPtxEr8bZCZLGwPBUrQ5UCIIu4uebhImw== integrity sha512-FiH23cr9QG8VdfbmvJJZmdfHGVMCouOOAzoXZ3Cd7czGC52RbycwNt8YCI7SA69pAl+t30vh8LMaO/N+kcel6w==
dependencies: dependencies:
"@commitlint/format" "^18.4.4" "@commitlint/format" "^18.6.0"
"@commitlint/lint" "^18.5.0" "@commitlint/lint" "^18.6.0"
"@commitlint/load" "^18.5.0" "@commitlint/load" "^18.6.0"
"@commitlint/read" "^18.4.4" "@commitlint/read" "^18.6.0"
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
execa "^5.0.0" execa "^5.0.0"
lodash.isfunction "^3.0.9" lodash.isfunction "^3.0.9"
resolve-from "5.0.0" resolve-from "5.0.0"
@@ -58,26 +58,26 @@
yargs "^17.0.0" yargs "^17.0.0"
"@commitlint/config-conventional@^18.4.3": "@commitlint/config-conventional@^18.4.3":
version "18.5.0" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-18.5.0.tgz#b50b317dfef81f34ff46ef581a5a4a11dafcae59" resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-18.6.0.tgz#88da3e34e2bfcd8a5d46bcc472553e7f63f35323"
integrity sha512-XGmU4u3Z7bCn0H0nTEG9LUn6hMDUIPP4P6dun7PKFhtnt/wwiKAqmPj+QRmFiqWjkOWcmrh7w7xRiDL32cWS5g== integrity sha512-CDCOf2eJz9D/TL44IBks0stM9TmdLCNE2B48owIU3YCadwzts/bobXPScagIgPQF6hhKYMEdj5zpUDlmbwuqwQ==
dependencies: dependencies:
conventional-changelog-conventionalcommits "^7.0.2" conventional-changelog-conventionalcommits "^7.0.2"
"@commitlint/config-validator@^18.5.0": "@commitlint/config-validator@^18.6.0":
version "18.5.0" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-18.5.0.tgz#3ddd3f94001ebbc5a61c7190fa7a51fab289690f" resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-18.6.0.tgz#ea1e04e92829dd7b90cea444f245b0bdefa0a586"
integrity sha512-mDAA6WQPjh9Ida8ACdInDylBQcqeUD2gBHE+dQu+B3OIHiWiSSrq4F2+wg3nDU9EzfcQSwPwYL+QbMmiW5SmLA== integrity sha512-Ptfa865arNozlkjxrYG3qt6wT9AlhNUHeuDyKEZiTL/l0ftncFhK/KN0t/EAMV2tec+0Mwxo0FmhbESj/bI+1g==
dependencies: dependencies:
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
ajv "^8.11.0" ajv "^8.11.0"
"@commitlint/ensure@^18.4.4": "@commitlint/ensure@^18.6.0":
version "18.4.4" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-18.4.4.tgz#5e142e489e32f6a22865cea05ca369a95a4b77a1" resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-18.6.0.tgz#3f3dc09d99016eaab0da9423123effd820d11931"
integrity sha512-KjD19p6julB5WrQL+Cd8p+AePwpl1XzGAjB0jnuFMKWtji9L7ucCZUKDstGjlkBZGGzH/nvdB8K+bh5K27EVUg== integrity sha512-xY07NmOBJ7JuhX3tic021PaeLepZARIQyqpAQoNQZoml1keBFfB6MbA7XlWZv0ebbarUFE4yhKxOPw+WFv7/qw==
dependencies: dependencies:
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
lodash.camelcase "^4.3.0" lodash.camelcase "^4.3.0"
lodash.kebabcase "^4.1.1" lodash.kebabcase "^4.1.1"
lodash.snakecase "^4.1.1" lodash.snakecase "^4.1.1"
@@ -89,41 +89,41 @@
resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-18.4.4.tgz#ade986742c1944c8162a54288747e54a8c6146b5" resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-18.4.4.tgz#ade986742c1944c8162a54288747e54a8c6146b5"
integrity sha512-a37Nd3bDQydtg9PCLLWM9ZC+GO7X5i4zJvrggJv5jBhaHsXeQ9ZWdO6ODYR+f0LxBXXNYK3geYXJrCWUCP8JEg== integrity sha512-a37Nd3bDQydtg9PCLLWM9ZC+GO7X5i4zJvrggJv5jBhaHsXeQ9ZWdO6ODYR+f0LxBXXNYK3geYXJrCWUCP8JEg==
"@commitlint/format@^18.4.4": "@commitlint/format@^18.6.0":
version "18.4.4" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-18.4.4.tgz#51996ba0a7eac14f7f8991cff8700e4a2fd86ba7" resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-18.6.0.tgz#e13ef8419cd8eb37be5825a2e84e73cabbfb56ad"
integrity sha512-2v3V5hVlv0R3pe7p66IX5F7cjeVvGM5JqITRIbBCFvGHPJ/CG74rjTkAu0RBEiIhlk3eOaLjVGq3d5falPkLBA== integrity sha512-8UNWfs2slPPSQiiVpLGJTnPHv7Jkd5KYxfbNXbmLL583bjom4RrylvyrCVnmZReA8nNad7pPXq6mDH4FNVj6xg==
dependencies: dependencies:
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
chalk "^4.1.0" chalk "^4.1.0"
"@commitlint/is-ignored@^18.4.4": "@commitlint/is-ignored@^18.6.0":
version "18.4.4" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-18.4.4.tgz#3fbf2a55a960ccf037e79ad4610091a693800680" resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-18.6.0.tgz#d15ab04f547f7554cc3377d50f8e19178502b8af"
integrity sha512-rXWes9owKBTjfTr6Od7YlflRg4N+ngkOH+dUZhk0qL/XQb26mHz0EgVgdixMVBac1OsohRwJaLmVHX+5F6vfmg== integrity sha512-Xjx/ZyyJ4FdLuz0FcOvqiqSFgiO2yYj3QN9XlvyrxqbXTxPVC7QFEXJYBVPulUSN/gR7WXH1Udw+HYYfD17xog==
dependencies: dependencies:
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
semver "7.5.4" semver "7.5.4"
"@commitlint/lint@^18.5.0": "@commitlint/lint@^18.6.0":
version "18.5.0" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-18.5.0.tgz#83c7434e969d04aaa84c5129c17b3dcde33d4650" resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-18.6.0.tgz#f54c856840a6238e0c2972588c2dc986317f1b7b"
integrity sha512-4VbfTGTZf/aDaOn+vednMQFu5EIKfERvv7j8La3etQCra0O2QMrZL28xugTroYekawpTkiWWvLswtpVfabIbgw== integrity sha512-ycbuDWfyykPmslgiHzhz8dL6F0BJYltXLVfc+M49z0c+FNITM0v+r0Vd2+Tdtq06VTc894p2+YSmZhulY8Jn3Q==
dependencies: dependencies:
"@commitlint/is-ignored" "^18.4.4" "@commitlint/is-ignored" "^18.6.0"
"@commitlint/parse" "^18.4.4" "@commitlint/parse" "^18.6.0"
"@commitlint/rules" "^18.4.4" "@commitlint/rules" "^18.6.0"
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
"@commitlint/load@^18.5.0": "@commitlint/load@^18.6.0":
version "18.5.0" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-18.5.0.tgz#b14eef9306c2500594d8a7f1e4a8d68cb2562439" resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-18.6.0.tgz#98108294b9383aa2905781b192215df4718babb7"
integrity sha512-vpyGgk7rzbFsU01NVwPNC/WetHFP0EwSYnQ1R833SJFHkEo+cWvqoVlw/VoZwBMoI6sF5/lwEdKzFDr1DHJ6+A== integrity sha512-RRssj7TmzT0bowoEKlgwg8uQ7ORXWkw7lYLsZZBMi9aInsJuGNLNWcMxJxRZbwxG3jkCidGUg85WmqJvRjsaDA==
dependencies: dependencies:
"@commitlint/config-validator" "^18.5.0" "@commitlint/config-validator" "^18.6.0"
"@commitlint/execute-rule" "^18.4.4" "@commitlint/execute-rule" "^18.4.4"
"@commitlint/resolve-extends" "^18.5.0" "@commitlint/resolve-extends" "^18.6.0"
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
chalk "^4.1.0" chalk "^4.1.0"
cosmiconfig "^8.3.6" cosmiconfig "^8.3.6"
cosmiconfig-typescript-loader "^5.0.0" cosmiconfig-typescript-loader "^5.0.0"
@@ -137,46 +137,46 @@
resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-18.4.4.tgz#811682a0d147a24e5c467acdb52071434df2b9f5" resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-18.4.4.tgz#811682a0d147a24e5c467acdb52071434df2b9f5"
integrity sha512-lHF95mMDYgAI1LBXveJUyg4eLaMXyOqJccCK3v55ZOEUsMPrDi8upqDjd/NmzWmESYihaOMBTAnxm+6oD1WoDQ== integrity sha512-lHF95mMDYgAI1LBXveJUyg4eLaMXyOqJccCK3v55ZOEUsMPrDi8upqDjd/NmzWmESYihaOMBTAnxm+6oD1WoDQ==
"@commitlint/parse@^18.4.4": "@commitlint/parse@^18.6.0":
version "18.4.4" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-18.4.4.tgz#5c8f515d4dbebe9b7ccfcd1701e58446e2bec6da" resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-18.6.0.tgz#ae19ff8ceb0c8ffab131158829b06b505b9921fd"
integrity sha512-99G7dyn/OoyNWXJni0Ki0K3aJd01pEb/Im/Id6y4X7PN+kGOahjz2z/cXYYHn7xDdooqFVdiVrVLeChfgpWZ2g== integrity sha512-Y/G++GJpATFw54O0jikc/h2ibyGHgghtPnwsOk3O/aU092ydJ5XEHYcd7xGNQYuLweLzQis2uEwRNk9AVIPbQQ==
dependencies: dependencies:
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
conventional-changelog-angular "^7.0.0" conventional-changelog-angular "^7.0.0"
conventional-commits-parser "^5.0.0" conventional-commits-parser "^5.0.0"
"@commitlint/read@^18.4.4": "@commitlint/read@^18.6.0":
version "18.4.4" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-18.4.4.tgz#7f6848edd3210bf82e6aaa0cd30e72e7e669e009" resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-18.6.0.tgz#324ea1fa625f88427780df23fffe4a92d383d665"
integrity sha512-r58JbWky4gAFPea/CZmvlqP9Ehbs+8gSEUqhIJOojKzTc3xlxFnZUDVPcEnnaqzQEEoV6C69VW7xuzdcBlu/FQ== integrity sha512-w39ji8VfWhPKRquPhRHB3Yd8XIHwaNHgOh28YI1QEmZ59qVpuVUQo6h/NsVb+uoC6LbXZiofTZv2iFR084jKEA==
dependencies: dependencies:
"@commitlint/top-level" "^18.4.4" "@commitlint/top-level" "^18.4.4"
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
git-raw-commits "^2.0.11" git-raw-commits "^2.0.11"
minimist "^1.2.6" minimist "^1.2.6"
"@commitlint/resolve-extends@^18.5.0": "@commitlint/resolve-extends@^18.6.0":
version "18.5.0" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-18.5.0.tgz#ea955fc9455f70a5389cdc9633c78132c8008ed2" resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-18.6.0.tgz#db55be2b32e12593bc98dc44c6d9a9d90941bab4"
integrity sha512-OxCYOMnlkOEEIkwTaRiFjHyuWBq962WBZQVHfMHej8tr3d+SfjznvqZhPmW8/SuqtfmGEiJPGWUNOxgwH+O0MA== integrity sha512-k2Xp+Fxeggki2i90vGrbiLDMefPius3zGSTFFlRAPKce/SWLbZtI+uqE9Mne23mHO5lmcSV8z5m6ziiJwGpOcg==
dependencies: dependencies:
"@commitlint/config-validator" "^18.5.0" "@commitlint/config-validator" "^18.6.0"
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
import-fresh "^3.0.0" import-fresh "^3.0.0"
lodash.mergewith "^4.6.2" lodash.mergewith "^4.6.2"
resolve-from "^5.0.0" resolve-from "^5.0.0"
resolve-global "^1.0.0" resolve-global "^1.0.0"
"@commitlint/rules@^18.4.4": "@commitlint/rules@^18.6.0":
version "18.4.4" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-18.4.4.tgz#859e920a4f0053ae27e4cdd65f68e7576a5ab53f" resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-18.6.0.tgz#6d933e2de5639b75b4946120b3880e72e66a6051"
integrity sha512-6Uzlsnl/GljEI+80NWjf4ThOfR8NIsbm18IfXYuCEchlwMHSxiuYG4rHSK5DNmG/+MIo8eR5VdQ0gQyt7kWzAA== integrity sha512-pTalvCEvuCWrBWZA/YqO/3B3nZnY3Ncc+TmQsRajBdC1tkQIm5Iovdo4Ec7f2Dw1tVvpYMUUNAgcWqsY0WckWg==
dependencies: dependencies:
"@commitlint/ensure" "^18.4.4" "@commitlint/ensure" "^18.6.0"
"@commitlint/message" "^18.4.4" "@commitlint/message" "^18.4.4"
"@commitlint/to-lines" "^18.4.4" "@commitlint/to-lines" "^18.4.4"
"@commitlint/types" "^18.4.4" "@commitlint/types" "^18.6.0"
execa "^5.0.0" execa "^5.0.0"
"@commitlint/to-lines@^18.4.4": "@commitlint/to-lines@^18.4.4":
@@ -191,10 +191,10 @@
dependencies: dependencies:
find-up "^5.0.0" find-up "^5.0.0"
"@commitlint/types@^18.4.4": "@commitlint/types@^18.6.0":
version "18.4.4" version "18.6.0"
resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-18.4.4.tgz#dae9e0ce6a6728a36b8982ff301af0170bbe0d38" resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-18.6.0.tgz#3d3493cb5910f60f3749a8eb56aca47dc2e1b662"
integrity sha512-/FykLtodD8gKs3+VNkAUwofu4LBHankclj+I8fB2jTRvG6PV7k/OUt4P+VbM7ip853qS4F0g7Z6hLNa6JeMcAQ== integrity sha512-oavoKLML/eJa2rJeyYSbyGAYzTxQ6voG5oeX3OrxpfrkRWhJfm4ACnhoRf5tgiybx2MZ+EVFqC1Lw3W8/uwpZA==
dependencies: dependencies:
chalk "^4.1.0" chalk "^4.1.0"
@@ -474,9 +474,9 @@
react-dom "18.2.0" react-dom "18.2.0"
"@rushstack/eslint-patch@^1.3.3": "@rushstack/eslint-patch@^1.3.3":
version "1.7.0" version "1.7.1"
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.0.tgz#b5bc1e081428794f6a4d239707b359404be35ce2" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.1.tgz#29e6926204b982721ff721240807527309825a1f"
integrity sha512-Jh4t/593gxs0lJZ/z3NnasKlplXT2f+4y/LZYuaKZW5KAaiVFL/fThhs+17EbUd53jUVJ0QudYCBGbN/psvaqg== integrity sha512-irBNt5094vHloql4QzY8RdeI8Tns2kGsaiJ/m6jENWx9xCz/m/F4gKQ1dAailFmpL0Id9tgWLqZbTUO4SINM/Q==
"@selderee/plugin-htmlparser2@^0.11.0": "@selderee/plugin-htmlparser2@^0.11.0":
version "0.11.0" version "0.11.0"
@@ -509,9 +509,9 @@
integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==
"@types/node@^20": "@types/node@^20":
version "20.11.5" version "20.11.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.5.tgz#be10c622ca7fcaa3cf226cf80166abc31389d86e" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.6.tgz#6adf4241460e28be53836529c033a41985f85b6e"
integrity sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w== integrity sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==
dependencies: dependencies:
undici-types "~5.26.4" undici-types "~5.26.4"
@@ -971,9 +971,9 @@ camelcase@^5.3.1:
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
caniuse-lite@^1.0.30001565, caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001579: caniuse-lite@^1.0.30001565, caniuse-lite@^1.0.30001578, caniuse-lite@^1.0.30001579:
version "1.0.30001579" version "1.0.30001580"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz#45c065216110f46d6274311a4b3fcf6278e0852a" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz#e3c76bc6fe020d9007647044278954ff8cd17d1e"
integrity sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA== integrity sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==
chalk@5.3.0: chalk@5.3.0:
version "5.3.0" version "5.3.0"
@@ -1342,9 +1342,9 @@ editorconfig@^1.0.3:
semver "^7.5.3" semver "^7.5.3"
electron-to-chromium@^1.4.601: electron-to-chromium@^1.4.601:
version "1.4.641" version "1.4.645"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.641.tgz#7439993ee3df558bbb78d5459c15cfbde5bf6d60" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.645.tgz#117f964252eb2f0ff00fc7360cb3080e2cf66e3c"
integrity sha512-JetAF3M5Lr9hwzDe3oMmWFOydlclqt2loEljxc0AAP5NYM170sSW+F5/cn5ROBfjx5LdmzeeAgWnyAU9cjPhmA== integrity sha512-EeS1oQDCmnYsRDRy2zTeC336a/4LZ6WKqvSaM1jLocEk5ZuyszkQtCpsqvuvaIXGOUjwtvF6LTcS8WueibXvSw==
emoji-regex@^10.3.0: emoji-regex@^10.3.0:
version "10.3.0" version "10.3.0"
@@ -3597,9 +3597,9 @@ spdx-correct@^3.0.0:
spdx-license-ids "^3.0.0" spdx-license-ids "^3.0.0"
spdx-exceptions@^2.1.0: spdx-exceptions@^2.1.0:
version "2.3.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz#c07a4ede25b16e4f78e6707bbd84b15a45c19c1b"
integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== integrity sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==
spdx-expression-parse@^3.0.0: spdx-expression-parse@^3.0.0:
version "3.0.1" version "3.0.1"