Fixed signin basd on vercel learn github suggestions and adding NEXTAUTH_URL to env signin to work.

This commit is contained in:
Bradley Shellnut 2023-10-31 11:54:40 -07:00
parent ccbf227239
commit fce3e731b9
5 changed files with 79 additions and 64 deletions

View file

@ -124,12 +124,22 @@ export async function authenticate(
prevState: string | undefined, prevState: string | undefined,
formData: FormData formData: FormData
) { ) {
// Fixed from suggestions in https://github.com/vercel/next-learn/issues/252
let responseRedirectUrl = null;
try { try {
await signIn("credentials", Object.fromEntries(formData)); responseRedirectUrl = await signIn("credentials", {
...Object.fromEntries(formData),
redirect: false,
});
} catch (error) { } catch (error) {
console.log("error", error);
if ((error as Error).message.includes("CredentialsSignin")) { if ((error as Error).message.includes("CredentialsSignin")) {
return "CredentialsSignin"; return "CredentialSignin";
} }
throw error; throw error;
} finally {
if (responseRedirectUrl) {
redirect(responseRedirectUrl);
}
} }
} }

View file

@ -13,7 +13,9 @@ export const authConfig = {
const isLoggedIn = !!auth?.user; const isLoggedIn = !!auth?.user;
const isOnDashboard = nextUrl.pathname.startsWith("/dashboard"); const isOnDashboard = nextUrl.pathname.startsWith("/dashboard");
if (isOnDashboard) { if (isOnDashboard) {
if (isLoggedIn) return true; if (isLoggedIn) {
return true;
}
return false; // Redirect unathenticated users to login page return false; // Redirect unathenticated users to login page
} else if (isLoggedIn) { } else if (isLoggedIn) {
return Response.redirect(new URL("/dashboard", nextUrl)); return Response.redirect(new URL("/dashboard", nextUrl));

View file

@ -26,18 +26,17 @@ export const { auth, signIn, signOut } = NextAuth({
.safeParse(credentials); .safeParse(credentials);
if (parsedCredentials.success) { if (parsedCredentials.success) {
console.log('Valid credentials');
const { email, password } = parsedCredentials.data; const { email, password } = parsedCredentials.data;
const user = await getUser(email); const user = await getUser(email);
if (!user) return null; if (!user) return null;
const passwordsMatch = await bcrypt.compare(password, user.password); const passwordsMatch = await bcrypt.compare(password, user.password);
console.log('Passwords match', passwordsMatch); if (passwordsMatch) {
if (passwordsMatch) return user; return user;
}
} }
console.log("Invalid credentials");
return null; return null;
}, },
}), }),

View file

@ -11,11 +11,11 @@
"@heroicons/react": "^2.0.18", "@heroicons/react": "^2.0.18",
"@tailwindcss/forms": "^0.5.6", "@tailwindcss/forms": "^0.5.6",
"@types/node": "20.5.7", "@types/node": "20.5.7",
"@vercel/postgres": "^0.5.0", "@vercel/postgres": "^0.5.1",
"autoprefixer": "10.4.15", "autoprefixer": "10.4.15",
"bcrypt": "^5.1.1", "bcrypt": "^5.1.1",
"clsx": "^2.0.0", "clsx": "^2.0.0",
"next": "^14.0.0", "next": "^14.0.1",
"next-auth": "5.0.0-beta.3", "next-auth": "5.0.0-beta.3",
"postcss": "8.4.31", "postcss": "8.4.31",
"react": "18.2.0", "react": "18.2.0",
@ -27,7 +27,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/bcrypt": "^5.0.1", "@types/bcrypt": "^5.0.1",
"@types/react": "18.2.21", "@types/react": "18.2.33",
"@types/react-dom": "18.2.14", "@types/react-dom": "18.2.14",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",
"eslint": "8.52.0", "eslint": "8.52.0",
@ -35,6 +35,6 @@
"prettier": "^3.0.3" "prettier": "^3.0.3"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18.11"
} }
} }

View file

@ -15,8 +15,8 @@ dependencies:
specifier: 20.5.7 specifier: 20.5.7
version: 20.5.7 version: 20.5.7
'@vercel/postgres': '@vercel/postgres':
specifier: ^0.5.0 specifier: ^0.5.1
version: 0.5.0 version: 0.5.1
autoprefixer: autoprefixer:
specifier: 10.4.15 specifier: 10.4.15
version: 10.4.15(postcss@8.4.31) version: 10.4.15(postcss@8.4.31)
@ -27,11 +27,11 @@ dependencies:
specifier: ^2.0.0 specifier: ^2.0.0
version: 2.0.0 version: 2.0.0
next: next:
specifier: ^14.0.0 specifier: ^14.0.1
version: 14.0.0(react-dom@18.2.0)(react@18.2.0) version: 14.0.1(react-dom@18.2.0)(react@18.2.0)
next-auth: next-auth:
specifier: 5.0.0-beta.3 specifier: 5.0.0-beta.3
version: 5.0.0-beta.3(next@14.0.0)(react@18.2.0) version: 5.0.0-beta.3(next@14.0.1)(react@18.2.0)
postcss: postcss:
specifier: 8.4.31 specifier: 8.4.31
version: 8.4.31 version: 8.4.31
@ -59,8 +59,8 @@ devDependencies:
specifier: ^5.0.1 specifier: ^5.0.1
version: 5.0.1 version: 5.0.1
'@types/react': '@types/react':
specifier: 18.2.21 specifier: 18.2.33
version: 18.2.21 version: 18.2.33
'@types/react-dom': '@types/react-dom':
specifier: 18.2.14 specifier: 18.2.14
version: 18.2.14 version: 18.2.14
@ -231,8 +231,8 @@ packages:
'@types/pg': 8.6.6 '@types/pg': 8.6.6
dev: false dev: false
/@next/env@14.0.0: /@next/env@14.0.1:
resolution: {integrity: sha512-cIKhxkfVELB6hFjYsbtEeTus2mwrTC+JissfZYM0n+8Fv+g8ucUfOlm3VEDtwtwydZ0Nuauv3bl0qF82nnCAqA==} resolution: {integrity: sha512-Ms8ZswqY65/YfcjrlcIwMPD7Rg/dVjdLapMcSHG26W6O67EJDF435ShW4H4LXi1xKO1oRc97tLXUpx8jpLe86A==}
dev: false dev: false
/@next/eslint-plugin-next@14.0.1: /@next/eslint-plugin-next@14.0.1:
@ -241,8 +241,8 @@ packages:
glob: 7.1.7 glob: 7.1.7
dev: true dev: true
/@next/swc-darwin-arm64@14.0.0: /@next/swc-darwin-arm64@14.0.1:
resolution: {integrity: sha512-HQKi159jCz4SRsPesVCiNN6tPSAFUkOuSkpJsqYTIlbHLKr1mD6be/J0TvWV6fwJekj81bZV9V/Tgx3C2HO9lA==} resolution: {integrity: sha512-JyxnGCS4qT67hdOKQ0CkgFTp+PXub5W1wsGvIq98TNbF3YEIN7iDekYhYsZzc8Ov0pWEsghQt+tANdidITCLaw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -250,8 +250,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-darwin-x64@14.0.0: /@next/swc-darwin-x64@14.0.1:
resolution: {integrity: sha512-4YyQLMSaCgX/kgC1jjF3s3xSoBnwHuDhnF6WA1DWNEYRsbOOPWjcYhv8TKhRe2ApdOam+VfQSffC4ZD+X4u1Cg==} resolution: {integrity: sha512-625Z7bb5AyIzswF9hvfZWa+HTwFZw+Jn3lOBNZB87lUS0iuCYDHqk3ujuHCkiyPtSC0xFBtYDLcrZ11mF/ap3w==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -259,8 +259,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-arm64-gnu@14.0.0: /@next/swc-linux-arm64-gnu@14.0.1:
resolution: {integrity: sha512-io7fMkJ28Glj7SH8yvnlD6naIhRDnDxeE55CmpQkj3+uaA2Hko6WGY2pT5SzpQLTnGGnviK85cy8EJ2qsETj/g==} resolution: {integrity: sha512-iVpn3KG3DprFXzVHM09kvb//4CNNXBQ9NB/pTm8LO+vnnnaObnzFdS5KM+w1okwa32xH0g8EvZIhoB3fI3mS1g==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -268,8 +268,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-arm64-musl@14.0.0: /@next/swc-linux-arm64-musl@14.0.1:
resolution: {integrity: sha512-nC2h0l1Jt8LEzyQeSs/BKpXAMe0mnHIMykYALWaeddTqCv5UEN8nGO3BG8JAqW/Y8iutqJsaMe2A9itS0d/r8w==} resolution: {integrity: sha512-mVsGyMxTLWZXyD5sen6kGOTYVOO67lZjLApIj/JsTEEohDDt1im2nkspzfV5MvhfS7diDw6Rp/xvAQaWZTv1Ww==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -277,8 +277,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-x64-gnu@14.0.0: /@next/swc-linux-x64-gnu@14.0.1:
resolution: {integrity: sha512-Wf+WjXibJQ7hHXOdNOmSMW5bxeJHVf46Pwb3eLSD2L76NrytQlif9NH7JpHuFlYKCQGfKfgSYYre5rIfmnSwQw==} resolution: {integrity: sha512-wMqf90uDWN001NqCM/auRl3+qVVeKfjJdT9XW+RMIOf+rhUzadmYJu++tp2y+hUbb6GTRhT+VjQzcgg/QTD9NQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -286,8 +286,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-linux-x64-musl@14.0.0: /@next/swc-linux-x64-musl@14.0.1:
resolution: {integrity: sha512-WTZb2G7B+CTsdigcJVkRxfcAIQj7Lf0ipPNRJ3vlSadU8f0CFGv/ST+sJwF5eSwIe6dxKoX0DG6OljDBaad+rg==} resolution: {integrity: sha512-ol1X1e24w4j4QwdeNjfX0f+Nza25n+ymY0T2frTyalVczUmzkVD7QGgPTZMHfR1aLrO69hBs0G3QBYaj22J5GQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -295,8 +295,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-arm64-msvc@14.0.0: /@next/swc-win32-arm64-msvc@14.0.1:
resolution: {integrity: sha512-7R8/x6oQODmNpnWVW00rlWX90sIlwluJwcvMT6GXNIBOvEf01t3fBg0AGURNKdTJg2xNuP7TyLchCL7Lh2DTiw==} resolution: {integrity: sha512-WEmTEeWs6yRUEnUlahTgvZteh5RJc4sEjCQIodJlZZ5/VJwVP8p2L7l6VhzQhT4h7KvLx/Ed4UViBdne6zpIsw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -304,8 +304,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-ia32-msvc@14.0.0: /@next/swc-win32-ia32-msvc@14.0.1:
resolution: {integrity: sha512-RLK1nELvhCnxaWPF07jGU4x3tjbyx2319q43loZELqF0+iJtKutZ+Lk8SVmf/KiJkYBc7Cragadz7hb3uQvz4g==} resolution: {integrity: sha512-oFpHphN4ygAgZUKjzga7SoH2VGbEJXZa/KL8bHCAwCjDWle6R1SpiGOdUdA8EJ9YsG1TYWpzY6FTbUA+iAJeww==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@ -313,8 +313,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@next/swc-win32-x64-msvc@14.0.0: /@next/swc-win32-x64-msvc@14.0.1:
resolution: {integrity: sha512-g6hLf1SUko+hnnaywQQZzzb3BRecQsoKkF3o/C+F+dOA4w/noVAJngUVkfwF0+2/8FzNznM7ofM6TGZO9svn7w==} resolution: {integrity: sha512-FFp3nOJ/5qSpeWT0BZQ+YE1pSMk4IMpkME/1DwKBwhg4mJLB9L+6EXuJi4JEwaJdl5iN+UUlmUD3IsR1kx5fAg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -391,11 +391,11 @@ packages:
/@types/react-dom@18.2.14: /@types/react-dom@18.2.14:
resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==}
dependencies: dependencies:
'@types/react': 18.2.21 '@types/react': 18.2.33
dev: true dev: true
/@types/react@18.2.21: /@types/react@18.2.33:
resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} resolution: {integrity: sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==}
dependencies: dependencies:
'@types/prop-types': 15.7.9 '@types/prop-types': 15.7.9
'@types/scheduler': 0.16.5 '@types/scheduler': 0.16.5
@ -473,14 +473,14 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true dev: true
/@vercel/postgres@0.5.0: /@vercel/postgres@0.5.1:
resolution: {integrity: sha512-MFWp9SZmADqBe2x2mzEvwmGLiwOd8PVkUxYeBZx/RqdHl0bd8/1BH0zBR+zSimGyi9P/MVtZoJLdf5dkWw9m5Q==} resolution: {integrity: sha512-JKl8QOBIDnifhkxAhIKtY0A5Tb8oWBf2nzZhm0OH7Ffjsl0hGVnDL2w1/FCfpX8xna3JAWM034NGuhZfTFdmiw==}
engines: {node: '>=14.6'} engines: {node: '>=14.6'}
dependencies: dependencies:
'@neondatabase/serverless': 0.6.0 '@neondatabase/serverless': 0.6.0
bufferutil: 4.0.7 bufferutil: 4.0.8
utf-8-validate: 6.0.3 utf-8-validate: 6.0.3
ws: 8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3)
dev: false dev: false
/abbrev@1.1.1: /abbrev@1.1.1:
@ -730,8 +730,8 @@ packages:
update-browserslist-db: 1.0.13(browserslist@4.22.1) update-browserslist-db: 1.0.13(browserslist@4.22.1)
dev: false dev: false
/bufferutil@4.0.7: /bufferutil@4.0.8:
resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==}
engines: {node: '>=6.14.2'} engines: {node: '>=6.14.2'}
requiresBuild: true requiresBuild: true
dependencies: dependencies:
@ -767,6 +767,10 @@ packages:
resolution: {integrity: sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ==} resolution: {integrity: sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ==}
dev: false dev: false
/caniuse-lite@1.0.30001559:
resolution: {integrity: sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA==}
dev: false
/chalk@4.1.2: /chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -2032,7 +2036,7 @@ packages:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true dev: true
/next-auth@5.0.0-beta.3(next@14.0.0)(react@18.2.0): /next-auth@5.0.0-beta.3(next@14.0.1)(react@18.2.0):
resolution: {integrity: sha512-WOKhATBFGeONV+29HzFmspNmL7NXxrsCWLfaDKmAd/4DD1nqXE0BzNFH8t3SJBx7PUDMnB6F7xB76LM/AaV1MQ==} resolution: {integrity: sha512-WOKhATBFGeONV+29HzFmspNmL7NXxrsCWLfaDKmAd/4DD1nqXE0BzNFH8t3SJBx7PUDMnB6F7xB76LM/AaV1MQ==}
peerDependencies: peerDependencies:
next: ^14 next: ^14
@ -2043,12 +2047,12 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@auth/core': 0.0.0-manual.e9863699 '@auth/core': 0.0.0-manual.e9863699
next: 14.0.0(react-dom@18.2.0)(react@18.2.0) next: 14.0.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0 react: 18.2.0
dev: false dev: false
/next@14.0.0(react-dom@18.2.0)(react@18.2.0): /next@14.0.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-J0jHKBJpB9zd4+c153sair0sz44mbaCHxggs8ryVXSFBuBqJ8XdE9/ozoV85xGh2VnSjahwntBZZgsihL9QznA==} resolution: {integrity: sha512-s4YaLpE4b0gmb3ggtmpmV+wt+lPRuGtANzojMQ2+gmBpgX9w5fTbjsy6dXByBuENsdCX5pukZH/GxdFgO62+pA==}
engines: {node: '>=18.17.0'} engines: {node: '>=18.17.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -2062,25 +2066,25 @@ packages:
sass: sass:
optional: true optional: true
dependencies: dependencies:
'@next/env': 14.0.0 '@next/env': 14.0.1
'@swc/helpers': 0.5.2 '@swc/helpers': 0.5.2
busboy: 1.6.0 busboy: 1.6.0
caniuse-lite: 1.0.30001558 caniuse-lite: 1.0.30001559
postcss: 8.4.31 postcss: 8.4.31
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
styled-jsx: 5.1.1(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0)
watchpack: 2.4.0 watchpack: 2.4.0
optionalDependencies: optionalDependencies:
'@next/swc-darwin-arm64': 14.0.0 '@next/swc-darwin-arm64': 14.0.1
'@next/swc-darwin-x64': 14.0.0 '@next/swc-darwin-x64': 14.0.1
'@next/swc-linux-arm64-gnu': 14.0.0 '@next/swc-linux-arm64-gnu': 14.0.1
'@next/swc-linux-arm64-musl': 14.0.0 '@next/swc-linux-arm64-musl': 14.0.1
'@next/swc-linux-x64-gnu': 14.0.0 '@next/swc-linux-x64-gnu': 14.0.1
'@next/swc-linux-x64-musl': 14.0.0 '@next/swc-linux-x64-musl': 14.0.1
'@next/swc-win32-arm64-msvc': 14.0.0 '@next/swc-win32-arm64-msvc': 14.0.1
'@next/swc-win32-ia32-msvc': 14.0.0 '@next/swc-win32-ia32-msvc': 14.0.1
'@next/swc-win32-x64-msvc': 14.0.0 '@next/swc-win32-x64-msvc': 14.0.1
transitivePeerDependencies: transitivePeerDependencies:
- '@babel/core' - '@babel/core'
- babel-plugin-macros - babel-plugin-macros
@ -3056,7 +3060,7 @@ packages:
/wrappy@1.0.2: /wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
/ws@8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3):
resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
peerDependencies: peerDependencies:
@ -3068,7 +3072,7 @@ packages:
utf-8-validate: utf-8-validate:
optional: true optional: true
dependencies: dependencies:
bufferutil: 4.0.7 bufferutil: 4.0.8
utf-8-validate: 6.0.3 utf-8-validate: 6.0.3
dev: false dev: false