diff --git a/package.json b/package.json index e84f8e24..23d38fa4 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "maxmind": "^4.3.6", "md5": "^2.3.0", "moment-timezone": "^0.5.35", - "next": "14.0.4", + "next": "14.1.0", "next-basics": "^0.39.0", "node-fetch": "^3.2.8", "npm-run-all": "^4.1.5", diff --git a/src/app/(main)/NavBar.tsx b/src/app/(main)/NavBar.tsx index 15b23355..08007b1c 100644 --- a/src/app/(main)/NavBar.tsx +++ b/src/app/(main)/NavBar.tsx @@ -8,14 +8,13 @@ import LanguageButton from 'components/input/LanguageButton'; import ProfileButton from 'components/input/ProfileButton'; import TeamsButton from 'components/input/TeamsButton'; import Icons from 'components/icons'; -import { useLogin, useMessages, useNavigation, useTeamUrl } from 'components/hooks'; +import { useMessages, useNavigation, useTeamUrl } from 'components/hooks'; import styles from './NavBar.module.css'; export function NavBar() { - const { user } = useLogin(); const { formatMessage, labels } = useMessages(); - const { pathname } = useNavigation(); - const { teamId, renderTeamUrl } = useTeamUrl(); + const { pathname, router } = useNavigation(); + const { renderTeamUrl } = useTeamUrl(); const cloudMode = !!process.env.cloudMode; @@ -60,6 +59,12 @@ export function NavBar() { !cloudMode && { label: formatMessage(labels.logout), url: '/logout' }, ].filter(n => n); + const handleTeamChange = (teamId: string) => { + const url = teamId ? `/teams/${teamId}` : '/'; + + router.push(cloudMode ? `${process.env.cloudUrl}${url}` : url); + }; + return (
@@ -83,7 +88,7 @@ export function NavBar() { })}
- {user?.teams?.length && } + diff --git a/src/app/(main)/settings/teams/TeamsDataTable.tsx b/src/app/(main)/settings/teams/TeamsDataTable.tsx index 1890af8a..fe92b6a0 100644 --- a/src/app/(main)/settings/teams/TeamsDataTable.tsx +++ b/src/app/(main)/settings/teams/TeamsDataTable.tsx @@ -1,6 +1,6 @@ import DataTable from 'components/common/DataTable'; import TeamsTable from 'app/(main)/settings/teams/TeamsTable'; -import { useTeams } from 'components/hooks'; +import { useLogin, useTeams } from 'components/hooks'; export function TeamsDataTable({ allowEdit, @@ -9,7 +9,8 @@ export function TeamsDataTable({ allowEdit?: boolean; showActions?: boolean; }) { - const queryResult = useTeams(); + const { user } = useLogin(); + const queryResult = useTeams(user.id); return ( diff --git a/src/app/(main)/settings/websites/[websiteId]/WebsiteData.tsx b/src/app/(main)/settings/websites/[websiteId]/WebsiteData.tsx index c43b29bf..080b9b5c 100644 --- a/src/app/(main)/settings/websites/[websiteId]/WebsiteData.tsx +++ b/src/app/(main)/settings/websites/[websiteId]/WebsiteData.tsx @@ -1,6 +1,6 @@ import { Button, Modal, ModalTrigger, ActionForm } from 'react-basics'; import { useRouter } from 'next/navigation'; -import { useLogin, useMessages, useModified, useTeamUrl } from 'components/hooks'; +import { useLogin, useMessages, useModified, useTeams, useTeamUrl } from 'components/hooks'; import WebsiteDeleteForm from './WebsiteDeleteForm'; import WebsiteResetForm from './WebsiteResetForm'; import WebsiteTransferForm from './WebsiteTransferForm'; @@ -12,11 +12,12 @@ export function WebsiteData({ websiteId, onSave }: { websiteId: string; onSave?: const { touch } = useModified(); const { teamId, renderTeamUrl } = useTeamUrl(); const router = useRouter(); - const hasTeams = user?.teams?.length > 0; + const { result } = useTeams(user.id); + const hasTeams = result?.data?.length > 0; const isTeamOwner = (!teamId && hasTeams) || (hasTeams && - user?.teams + result?.data ?.find(({ id }) => id === teamId) ?.teamUser.find(({ role, userId }) => role === ROLES.teamOwner && userId === user.id)); diff --git a/src/components/hooks/queries/useTeams.ts b/src/components/hooks/queries/useTeams.ts index f8084025..be710807 100644 --- a/src/components/hooks/queries/useTeams.ts +++ b/src/components/hooks/queries/useTeams.ts @@ -1,18 +1,15 @@ import useApi from './useApi'; import useFilterQuery from './useFilterQuery'; -import useLogin from './useLogin'; import useModified from '../useModified'; -export function useTeams(userId?: string) { +export function useTeams(userId: string) { const { get } = useApi(); - const { user } = useLogin(); - const id = userId || user?.id; const { modified } = useModified(`teams`); return useFilterQuery({ - queryKey: ['teams', { userId: id, modified }], + queryKey: ['teams', { userId, modified }], queryFn: (params: any) => { - return get(`/teams`, params); + return get(`/users/${userId}/teams`, params); }, }); } diff --git a/src/components/hooks/queries/useWebsites.ts b/src/components/hooks/queries/useWebsites.ts index 94198975..8bfad333 100644 --- a/src/components/hooks/queries/useWebsites.ts +++ b/src/components/hooks/queries/useWebsites.ts @@ -13,9 +13,8 @@ export function useWebsites( return useFilterQuery({ queryKey: ['websites', { userId, teamId, modified, ...params }], - queryFn: (data: any) => { + queryFn: () => { return get(teamId ? `/teams/${teamId}/websites` : `/users/${userId || user.id}/websites`, { - ...data, ...params, }); }, diff --git a/src/components/input/TeamsButton.tsx b/src/components/input/TeamsButton.tsx index ae995aca..dcb01508 100644 --- a/src/components/input/TeamsButton.tsx +++ b/src/components/input/TeamsButton.tsx @@ -2,30 +2,39 @@ import { Key } from 'react'; import { Text, Icon, Button, Popup, Menu, Item, PopupTrigger, Flexbox } from 'react-basics'; import classNames from 'classnames'; import Icons from 'components/icons'; -import { useLogin, useMessages, useNavigation } from 'components/hooks'; +import { useLogin, useMessages, useTeams, useTeamUrl } from 'components/hooks'; import styles from './TeamsButton.module.css'; -export function TeamsButton({ teamId }: { teamId: string }) { +export function TeamsButton({ + className, + onChange, +}: { + className?: string; + onChange?: (value: string) => void; +}) { const { user } = useLogin(); const { formatMessage, labels } = useMessages(); - const { router } = useNavigation(); - const team = user?.teams?.find(({ id }) => id === teamId); - const cloudMode = !!process.env.cloudMode; + const { result } = useTeams(user?.id); + const { teamId } = useTeamUrl(); + const team = result?.data?.find(({ id }) => id === teamId); const handleSelect = (close: () => void, id: Key) => { - if (id !== user.id) { - router.push(cloudMode ? `${process.env.cloudUrl}/teams/${id}` : `/teams/${id}`); - } else { - router.push('/'); - } + onChange?.((id !== user.id ? id : '') as string); close(); }; + if (!result) { + return null; + } + return ( - {(close: () => void) => ( @@ -40,7 +49,7 @@ export function TeamsButton({ teamId }: { teamId: string }) {
{formatMessage(labels.team)}
- {user?.teams?.map(({ id, name }) => ( + {result?.data?.map(({ id, name }) => ( diff --git a/src/pages/api/auth/verify.ts b/src/pages/api/auth/verify.ts index ddd4a1a8..3cc78ed3 100644 --- a/src/pages/api/auth/verify.ts +++ b/src/pages/api/auth/verify.ts @@ -2,16 +2,11 @@ import { NextApiRequestAuth } from 'lib/types'; import { useAuth } from 'lib/middleware'; import { NextApiResponse } from 'next'; import { ok } from 'next-basics'; -import { getUserTeams } from 'queries/admin/team'; export default async (req: NextApiRequestAuth, res: NextApiResponse) => { await useAuth(req, res); const { user } = req.auth; - const teams = await getUserTeams(user.id); - - user['teams'] = teams.data.map(n => n); - return ok(res, user); }; diff --git a/src/pages/api/me/teams.ts b/src/pages/api/me/teams.ts index 1f6de446..3b88689d 100644 --- a/src/pages/api/me/teams.ts +++ b/src/pages/api/me/teams.ts @@ -3,7 +3,7 @@ import { NextApiRequestQueryBody } from 'lib/types'; import { pageInfo } from 'lib/schema'; import { NextApiResponse } from 'next'; import { methodNotAllowed } from 'next-basics'; -import userTeams from 'pages/api/users/[userId]/teams'; +import userTeamsRoute from 'pages/api/users/[userId]/teams'; import * as yup from 'yup'; const schema = { @@ -20,7 +20,7 @@ export default async (req: NextApiRequestQueryBody, res: NextApiResponse) => { if (req.method === 'GET') { req.query.userId = req.auth.user.id; - return userTeams(req, res); + return userTeamsRoute(req, res); } return methodNotAllowed(res); diff --git a/src/pages/api/me/websites.ts b/src/pages/api/me/websites.ts index 7a113991..48800f90 100644 --- a/src/pages/api/me/websites.ts +++ b/src/pages/api/me/websites.ts @@ -3,7 +3,7 @@ import { NextApiRequestQueryBody } from 'lib/types'; import { pageInfo } from 'lib/schema'; import { NextApiResponse } from 'next'; import { methodNotAllowed } from 'next-basics'; -import userWebsites from 'pages/api/users/[userId]/websites'; +import userWebsitesRoute from 'pages/api/users/[userId]/websites'; import * as yup from 'yup'; const schema = { @@ -20,7 +20,7 @@ export default async (req: NextApiRequestQueryBody, res: NextApiResponse) => { if (req.method === 'GET') { req.query.userId = req.auth.user.id; - return userWebsites(req, res); + return userWebsitesRoute(req, res); } return methodNotAllowed(res); diff --git a/src/pages/api/teams/index.ts b/src/pages/api/teams/index.ts index def8dfb8..08bf8f84 100644 --- a/src/pages/api/teams/index.ts +++ b/src/pages/api/teams/index.ts @@ -1,3 +1,4 @@ +import * as yup from 'yup'; import { Team } from '@prisma/client'; import { canCreateTeam } from 'lib/auth'; import { uuid } from 'lib/crypto'; @@ -6,8 +7,7 @@ import { NextApiRequestQueryBody, SearchFilter } from 'lib/types'; import { pageInfo } from 'lib/schema'; import { NextApiResponse } from 'next'; import { getRandomChars, methodNotAllowed, ok, unauthorized } from 'next-basics'; -import { createTeam, getUserTeams } from 'queries'; -import * as yup from 'yup'; +import { createTeam } from 'queries'; export interface TeamsRequestQuery extends SearchFilter {} export interface TeamsRequestBody { @@ -34,18 +34,6 @@ export default async ( user: { id: userId }, } = req.auth; - if (req.method === 'GET') { - const { page, query, pageSize } = req.query; - - const results = await getUserTeams(userId, { - page, - query, - pageSize, - }); - - return ok(res, results); - } - if (req.method === 'POST') { if (!(await canCreateTeam(req.auth))) { return unauthorized(res); diff --git a/src/pages/api/users/[userId]/teams.ts b/src/pages/api/users/[userId]/teams.ts index 0a75ff98..dda65355 100644 --- a/src/pages/api/users/[userId]/teams.ts +++ b/src/pages/api/users/[userId]/teams.ts @@ -32,10 +32,10 @@ export default async ( await useValidate(schema, req, res); const { user } = req.auth; - const { id: userId } = req.query; + const { userId } = req.query; if (req.method === 'GET') { - if (!user.isAdmin && user.id !== userId) { + if (!user.isAdmin && (!userId || user.id !== userId)) { return unauthorized(res); } diff --git a/src/pages/api/websites/index.ts b/src/pages/api/websites/index.ts index 686c4823..eb574415 100644 --- a/src/pages/api/websites/index.ts +++ b/src/pages/api/websites/index.ts @@ -5,7 +5,7 @@ import { NextApiRequestQueryBody, SearchFilter } from 'lib/types'; import { NextApiResponse } from 'next'; import { methodNotAllowed, ok, unauthorized } from 'next-basics'; import { createWebsite } from 'queries'; -import userWebsites from 'pages/api/users/[userId]/websites'; +import userWebsitesRoute from 'pages/api/users/[userId]/websites'; import * as yup from 'yup'; import { pageInfo } from 'lib/schema'; @@ -47,7 +47,7 @@ export default async ( req.query.userId = userId; } - return userWebsites(req, res); + return userWebsitesRoute(req, res); } if (req.method === 'POST') { diff --git a/yarn.lock b/yarn.lock index d8a9ce34..64ffe437 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1778,10 +1778,10 @@ "@netlify/node-cookies" "^0.1.0" urlpattern-polyfill "8.0.2" -"@next/env@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.0.4.tgz#d5cda0c4a862d70ae760e58c0cd96a8899a2e49a" - integrity sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ== +"@next/env@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.0.tgz#43d92ebb53bc0ae43dcc64fb4d418f8f17d7a341" + integrity sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw== "@next/eslint-plugin-next@14.0.4": version "14.0.4" @@ -1790,50 +1790,50 @@ dependencies: glob "7.1.7" -"@next/swc-darwin-arm64@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz#27b1854c2cd04eb1d5e75081a1a792ad91526618" - integrity sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg== +"@next/swc-darwin-arm64@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz#70a57c87ab1ae5aa963a3ba0f4e59e18f4ecea39" + integrity sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ== -"@next/swc-darwin-x64@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz#9940c449e757d0ee50bb9e792d2600cc08a3eb3b" - integrity sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw== +"@next/swc-darwin-x64@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz#0863a22feae1540e83c249384b539069fef054e9" + integrity sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g== -"@next/swc-linux-arm64-gnu@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz#0eafd27c8587f68ace7b4fa80695711a8434de21" - integrity sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w== +"@next/swc-linux-arm64-gnu@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz#893da533d3fce4aec7116fe772d4f9b95232423c" + integrity sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ== -"@next/swc-linux-arm64-musl@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz#2b0072adb213f36dada5394ea67d6e82069ae7dd" - integrity sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ== +"@next/swc-linux-arm64-musl@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz#d81ddcf95916310b8b0e4ad32b637406564244c0" + integrity sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g== -"@next/swc-linux-x64-gnu@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz#68c67d20ebc8e3f6ced6ff23a4ba2a679dbcec32" - integrity sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A== +"@next/swc-linux-x64-gnu@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz#18967f100ec19938354332dcb0268393cbacf581" + integrity sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ== -"@next/swc-linux-x64-musl@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz#67cd81b42fb2caf313f7992fcf6d978af55a1247" - integrity sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw== +"@next/swc-linux-x64-musl@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz#77077cd4ba8dda8f349dc7ceb6230e68ee3293cf" + integrity sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg== -"@next/swc-win32-arm64-msvc@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz#be06585906b195d755ceda28f33c633e1443f1a3" - integrity sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w== +"@next/swc-win32-arm64-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz#5f0b8cf955644104621e6d7cc923cad3a4c5365a" + integrity sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ== -"@next/swc-win32-ia32-msvc@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz#e76cabefa9f2d891599c3d85928475bd8d3f6600" - integrity sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg== +"@next/swc-win32-ia32-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz#21f4de1293ac5e5a168a412b139db5d3420a89d0" + integrity sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw== -"@next/swc-win32-x64-msvc@14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz#e74892f1a9ccf41d3bf5979ad6d3d77c07b9cba1" - integrity sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A== +"@next/swc-win32-x64-msvc@14.1.0": + version "14.1.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz#e561fb330466d41807123d932b365cf3d33ceba2" + integrity sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -3198,10 +3198,10 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== -caniuse-lite@^1.0.30001406: - version "1.0.30001558" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001558.tgz#d2c6e21fdbfe83817f70feab902421a19b7983ee" - integrity sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ== +caniuse-lite@^1.0.30001579: + version "1.0.30001587" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz#a0bce920155fa56a1885a69c74e1163fc34b4881" + integrity sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA== chalk@5.3.0: version "5.3.0" @@ -4843,11 +4843,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" @@ -6387,29 +6382,28 @@ next-basics@^0.39.0: jsonwebtoken "^9.0.0" pure-rand "^6.0.2" -next@14.0.4: - version "14.0.4" - resolved "https://registry.yarnpkg.com/next/-/next-14.0.4.tgz#bf00b6f835b20d10a5057838fa2dfced1d0d84dc" - integrity sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA== +next@14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/next/-/next-14.1.0.tgz#b31c0261ff9caa6b4a17c5af019ed77387174b69" + integrity sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q== dependencies: - "@next/env" "14.0.4" + "@next/env" "14.1.0" "@swc/helpers" "0.5.2" busboy "1.6.0" - caniuse-lite "^1.0.30001406" + caniuse-lite "^1.0.30001579" graceful-fs "^4.2.11" postcss "8.4.31" styled-jsx "5.1.1" - watchpack "2.4.0" optionalDependencies: - "@next/swc-darwin-arm64" "14.0.4" - "@next/swc-darwin-x64" "14.0.4" - "@next/swc-linux-arm64-gnu" "14.0.4" - "@next/swc-linux-arm64-musl" "14.0.4" - "@next/swc-linux-x64-gnu" "14.0.4" - "@next/swc-linux-x64-musl" "14.0.4" - "@next/swc-win32-arm64-msvc" "14.0.4" - "@next/swc-win32-ia32-msvc" "14.0.4" - "@next/swc-win32-x64-msvc" "14.0.4" + "@next/swc-darwin-arm64" "14.1.0" + "@next/swc-darwin-x64" "14.1.0" + "@next/swc-linux-arm64-gnu" "14.1.0" + "@next/swc-linux-arm64-musl" "14.1.0" + "@next/swc-linux-x64-gnu" "14.1.0" + "@next/swc-linux-x64-musl" "14.1.0" + "@next/swc-win32-arm64-msvc" "14.1.0" + "@next/swc-win32-ia32-msvc" "14.1.0" + "@next/swc-win32-x64-msvc" "14.1.0" nice-try@^1.0.4: version "1.0.5" @@ -9098,14 +9092,6 @@ vue@^3.2.23: "@vue/server-renderer" "3.3.4" "@vue/shared" "3.3.4" -watchpack@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - web-streams-polyfill@^3.0.3: version "3.2.1" resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6"