From d7e21a23e540164cd9186cf719069d5fa752894e Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 8 Jun 2023 16:21:02 +0200 Subject: [PATCH 01/34] UI component, route, zitadel server functions --- apps/login/app/(login)/passkey/add/page.tsx | 52 +++++++++++ apps/login/app/(login)/passkey/page.tsx | 49 ++++++++++ .../app/(login)/passwordless/create/page.tsx | 35 ------- apps/login/app/(login)/passwordless/page.tsx | 35 ------- apps/login/app/passkeys/route.ts | 26 ++++++ apps/login/lib/demos.ts | 10 +- apps/login/lib/zitadel.ts | 91 ++++++++++++++++--- apps/login/ui/RegisterPasskey.tsx | 90 ++++++++++++++++++ packages/zitadel-server/src/index.ts | 1 + 9 files changed, 302 insertions(+), 87 deletions(-) create mode 100644 apps/login/app/(login)/passkey/add/page.tsx create mode 100644 apps/login/app/(login)/passkey/page.tsx delete mode 100644 apps/login/app/(login)/passwordless/create/page.tsx delete mode 100644 apps/login/app/(login)/passwordless/page.tsx create mode 100644 apps/login/app/passkeys/route.ts create mode 100644 apps/login/ui/RegisterPasskey.tsx diff --git a/apps/login/app/(login)/passkey/add/page.tsx b/apps/login/app/(login)/passkey/add/page.tsx new file mode 100644 index 00000000000..8f5a813ec22 --- /dev/null +++ b/apps/login/app/(login)/passkey/add/page.tsx @@ -0,0 +1,52 @@ +import { getSession, server } from "#/lib/zitadel"; +import Alert from "#/ui/Alert"; +import RegisterPasskey from "#/ui/RegisterPasskey"; +import UserAvatar from "#/ui/UserAvatar"; +import { getMostRecentCookieWithLoginname } from "#/utils/cookies"; +import { useRouter } from "next/navigation"; + +export default async function Page({ + searchParams, +}: { + searchParams: Record; +}) { + const { loginName } = searchParams; + const sessionFactors = await loadSession(loginName); + + async function loadSession(loginName?: string) { + const recent = await getMostRecentCookieWithLoginname(loginName); + + return getSession(server, recent.id, recent.token).then((response) => { + if (response?.session) { + return response.session; + } + }); + } + + console.log(sessionFactors); + return ( +
+

Register Passkey

+

Setup your device for passkeys.

+ + {!sessionFactors && ( +
+ + Could not get the context of the user. Make sure to enter the + username first or provide a loginName as searchParam. + +
+ )} + + {sessionFactors && ( + + )} + + {sessionFactors?.id && } +
+ ); +} diff --git a/apps/login/app/(login)/passkey/page.tsx b/apps/login/app/(login)/passkey/page.tsx new file mode 100644 index 00000000000..d448e9da60a --- /dev/null +++ b/apps/login/app/(login)/passkey/page.tsx @@ -0,0 +1,49 @@ +import { getSession, server } from "#/lib/zitadel"; +import Alert from "#/ui/Alert"; +import UserAvatar from "#/ui/UserAvatar"; +import { getMostRecentCookieWithLoginname } from "#/utils/cookies"; +import { useRouter } from "next/navigation"; + +export default async function Page({ + searchParams, +}: { + searchParams: Record; +}) { + const router = useRouter(); + + const { loginName } = searchParams; + const sessionFactors = await loadSession(loginName); + + async function loadSession(loginName?: string) { + const recent = await getMostRecentCookieWithLoginname(loginName); + + return getSession(server, recent.id, recent.token).then((response) => { + if (response?.session) { + return response.session; + } + }); + } + + return ( +
+

Login with Passkey

+

Authenticate with your passkey device

+ {!sessionFactors && ( +
+ + Could not get the context of the user. Make sure to enter the + username first or provide a loginName as searchParam. + +
+ )} + + {sessionFactors && ( + + )} +
+ ); +} diff --git a/apps/login/app/(login)/passwordless/create/page.tsx b/apps/login/app/(login)/passwordless/create/page.tsx deleted file mode 100644 index c0ce2fa4d8d..00000000000 --- a/apps/login/app/(login)/passwordless/create/page.tsx +++ /dev/null @@ -1,35 +0,0 @@ -"use client"; -import { Button, ButtonVariants } from "#/ui/Button"; -import { TextInput } from "#/ui/Input"; -import UserAvatar from "#/ui/UserAvatar"; -import { useRouter } from "next/navigation"; - -export default function Page() { - const router = useRouter(); - - return ( -
-

Password

-

Enter your password.

- - - -
- -
-
- - -
-
- ); -} diff --git a/apps/login/app/(login)/passwordless/page.tsx b/apps/login/app/(login)/passwordless/page.tsx deleted file mode 100644 index c0ce2fa4d8d..00000000000 --- a/apps/login/app/(login)/passwordless/page.tsx +++ /dev/null @@ -1,35 +0,0 @@ -"use client"; -import { Button, ButtonVariants } from "#/ui/Button"; -import { TextInput } from "#/ui/Input"; -import UserAvatar from "#/ui/UserAvatar"; -import { useRouter } from "next/navigation"; - -export default function Page() { - const router = useRouter(); - - return ( -
-

Password

-

Enter your password.

- - - -
- -
-
- - -
-
- ); -} diff --git a/apps/login/app/passkeys/route.ts b/apps/login/app/passkeys/route.ts new file mode 100644 index 00000000000..077be16e50d --- /dev/null +++ b/apps/login/app/passkeys/route.ts @@ -0,0 +1,26 @@ +import { + createPasskeyRegistrationLink, + getSession, + server, +} from "#/lib/zitadel"; +import { getSessionCookieById } from "#/utils/cookies"; +import { NextRequest, NextResponse } from "next/server"; + +export async function POST(request: NextRequest) { + const body = await request.json(); + if (body) { + const { sessionId } = body; + + const session = await getSessionCookieById(sessionId); + + return createPasskeyRegistrationLink(server, session.id, session.token) + .then((resp) => { + return NextResponse.json(resp); + }) + .catch((error) => { + return NextResponse.json(error, { status: 500 }); + }); + } else { + return NextResponse.json({}, { status: 500 }); + } +} diff --git a/apps/login/lib/demos.ts b/apps/login/lib/demos.ts index 0bcacc0a991..a1b7e288285 100644 --- a/apps/login/lib/demos.ts +++ b/apps/login/lib/demos.ts @@ -48,11 +48,11 @@ export const demos: { name: string; items: Item[] }[] = [ // slug: "passwordless", // description: "The page to login a user with his passwordless device", // }, - // { - // name: "Passwordless Create", - // slug: "passwordless/create", - // description: "The page to add a users passwordless device", - // }, + { + name: "Passkey Registration", + slug: "passkey/add", + description: "The page to add a users passkey device", + }, ], }, { diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index b44b4793420..36bf3fc3e8c 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -20,6 +20,7 @@ import { VerifyEmailResponse, SetSessionResponse, DeleteSessionResponse, + VerifyPasskeyRegistrationResponse, } from "@zitadel/server"; export const zitadelConfig: ZitadelServerOptions = { @@ -35,7 +36,7 @@ if (!getServers().length) { server = initializeServer(zitadelConfig); } -export function getBrandingSettings( +export async function getBrandingSettings( server: ZitadelServer ): Promise { const settingsService = settings.getSettings(server); @@ -44,7 +45,7 @@ export function getBrandingSettings( .then((resp: GetBrandingSettingsResponse) => resp.settings); } -export function getGeneralSettings( +export async function getGeneralSettings( server: ZitadelServer ): Promise { const settingsService = settings.getSettings(server); @@ -53,7 +54,7 @@ export function getGeneralSettings( .then((resp: GetGeneralSettingsResponse) => resp.supportedLanguages); } -export function getLegalAndSupportSettings( +export async function getLegalAndSupportSettings( server: ZitadelServer ): Promise { const settingsService = settings.getSettings(server); @@ -64,7 +65,7 @@ export function getLegalAndSupportSettings( }); } -export function getPasswordComplexitySettings( +export async function getPasswordComplexitySettings( server: ZitadelServer ): Promise { const settingsService = settings.getSettings(server); @@ -74,7 +75,7 @@ export function getPasswordComplexitySettings( .then((resp: GetPasswordComplexitySettingsResponse) => resp.settings); } -export function createSession( +export async function createSession( server: ZitadelServer, loginName: string ): Promise { @@ -82,7 +83,7 @@ export function createSession( return sessionService.createSession({ checks: { user: { loginName } } }, {}); } -export function setSession( +export async function setSession( server: ZitadelServer, sessionId: string, sessionToken: string, @@ -95,7 +96,7 @@ export function setSession( ); } -export function getSession( +export async function getSession( server: ZitadelServer, sessionId: string, sessionToken: string @@ -104,7 +105,7 @@ export function getSession( return sessionService.getSession({ sessionId, sessionToken }, {}); } -export function deleteSession( +export async function deleteSession( server: ZitadelServer, sessionId: string, sessionToken: string @@ -113,7 +114,7 @@ export function deleteSession( return sessionService.deleteSession({ sessionId, sessionToken }, {}); } -export function listSessions( +export async function listSessions( server: ZitadelServer, ids: string[] ): Promise { @@ -130,7 +131,7 @@ export type AddHumanUserData = { password: string; }; -export function addHumanUser( +export async function addHumanUser( server: ZitadelServer, { email, firstName, lastName, password }: AddHumanUserData ): Promise { @@ -150,7 +151,7 @@ export function addHumanUser( }); } -export function verifyEmail( +export async function verifyEmail( server: ZitadelServer, userId: string, verificationCode: string @@ -171,7 +172,10 @@ export function verifyEmail( * @param userId the id of the user where the email should be set * @returns the newly set email */ -export function setEmail(server: ZitadelServer, userId: string): Promise { +export async function setEmail( + server: ZitadelServer, + userId: string +): Promise { const userservice = user.getUser(server); return userservice.setEmail( { @@ -181,4 +185,67 @@ export function setEmail(server: ZitadelServer, userId: string): Promise { ); } +/** + * + * @param server + * @param userId the id of the user where the email should be set + * @returns the newly set email + */ +export async function registerPasskey( + server: ZitadelServer, + userId: string +): Promise { + const userservice = user.getUser(server); + return userservice.registerPasskey( + { + userId, + }, + {} + ); +} + +/** + * + * @param server + * @param userId the id of the user where the email should be set + * @returns the newly set email + */ +export async function createPasskeyRegistrationLink( + server: ZitadelServer, + userId: string +): Promise { + const userservice = user.getUser(server); + return userservice.createPasskeyRegistrationLink( + { + userId, + // returnCode: new ReturnPasskeyRegistrationCode(), + }, + {} + ); +} + +/** + * + * @param server + * @param userId the id of the user where the email should be set + * @returns the newly set email + */ +export async function verifyPasskeyRegistration( + server: ZitadelServer, + passkeyId: string, + passkeyName: string, + publicKeyCredential: any, + userId: string +): Promise { + const userservice = user.getUser(server); + return userservice.verifyPasskeyRegistration( + { + passkeyId, + passkeyName, + publicKeyCredential, + userId, + }, + {} + ); +} export { server }; diff --git a/apps/login/ui/RegisterPasskey.tsx b/apps/login/ui/RegisterPasskey.tsx new file mode 100644 index 00000000000..fcca2807507 --- /dev/null +++ b/apps/login/ui/RegisterPasskey.tsx @@ -0,0 +1,90 @@ +"use client"; + +import { useState } from "react"; +import { Button, ButtonVariants } from "./Button"; +import { useForm } from "react-hook-form"; +import { useRouter } from "next/navigation"; +import { Spinner } from "./Spinner"; +import Alert from "./Alert"; + +type Inputs = {}; + +type Props = { + sessionId: string; +}; + +export default function RegisterPasskey({ sessionId }: Props) { + const { register, handleSubmit, formState } = useForm({ + mode: "onBlur", + }); + + const [error, setError] = useState(""); + + const [loading, setLoading] = useState(false); + + const router = useRouter(); + + async function submitRegister() { + // const link = await createPasskeyRegistrationLink(server, userId); + // console.log(link); + setError(""); + setLoading(true); + const res = await fetch("/passkeys", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + sessionId, + }), + }); + + const response = await res.json(); + + setLoading(false); + if (!res.ok) { + setError(response.details); + return Promise.reject(response.details); + } + return response; + } + + function submitRegisterAndContinue(value: Inputs): Promise { + return submitRegister().then((resp: any) => { + return router.push(`/accounts`); + }); + } + + const { errors } = formState; + + return ( +
+ {error && ( +
+ {error} +
+ )} + +
+ + + +
+
+ ); +} diff --git a/packages/zitadel-server/src/index.ts b/packages/zitadel-server/src/index.ts index 28b3911ffd4..eb684cd0dd2 100644 --- a/packages/zitadel-server/src/index.ts +++ b/packages/zitadel-server/src/index.ts @@ -28,6 +28,7 @@ export { export { AddHumanUserResponse, VerifyEmailResponse, + VerifyPasskeyRegistrationResponse, } from "./proto/server/zitadel/user/v2alpha/user_service"; export { type LegalAndSupportSettings } from "./proto/server/zitadel/settings/v2alpha/legal_settings"; From 717c46bc46e96fb01bd7f2914e69f630d50944b3 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 8 Jun 2023 17:27:35 +0200 Subject: [PATCH 02/34] use session token for passkey register --- apps/login/app/passkeys/route.ts | 34 ++++++++++++++++++++++++-------- apps/login/lib/zitadel.ts | 13 ++++++++++-- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/apps/login/app/passkeys/route.ts b/apps/login/app/passkeys/route.ts index 077be16e50d..394e7ae4972 100644 --- a/apps/login/app/passkeys/route.ts +++ b/apps/login/app/passkeys/route.ts @@ -11,15 +11,33 @@ export async function POST(request: NextRequest) { if (body) { const { sessionId } = body; - const session = await getSessionCookieById(sessionId); + const sessionCookie = await getSessionCookieById(sessionId); + console.log(sessionCookie); - return createPasskeyRegistrationLink(server, session.id, session.token) - .then((resp) => { - return NextResponse.json(resp); - }) - .catch((error) => { - return NextResponse.json(error, { status: 500 }); - }); + const session = await getSession( + server, + sessionCookie.id, + sessionCookie.token + ); + + if (session?.session && session.session?.factors?.user?.id) { + console.log(session.session.factors.user.id, sessionCookie.token); + return createPasskeyRegistrationLink( + session.session.factors.user.id, + sessionCookie.token + ) + .then((resp) => { + return NextResponse.json(resp); + }) + .catch((error) => { + return NextResponse.json(error, { status: 500 }); + }); + } else { + return NextResponse.json( + { details: "could not get session" }, + { status: 500 } + ); + } } else { return NextResponse.json({}, { status: 500 }); } diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index 36bf3fc3e8c..9459bab856a 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -211,9 +211,18 @@ export async function registerPasskey( * @returns the newly set email */ export async function createPasskeyRegistrationLink( - server: ZitadelServer, - userId: string + userId: string, + sessionToken: string ): Promise { + // this actions will be made from the currently seleected user + const zitadelConfig: ZitadelServerOptions = { + name: "zitadel login", + apiUrl: process.env.ZITADEL_API_URL ?? "", + token: `${sessionToken}`, + }; + + const server: ZitadelServer = initializeServer(zitadelConfig); + const userservice = user.getUser(server); return userservice.createPasskeyRegistrationLink( { From 084051889b9d4ffba7c2b63196fc6596e28197ca Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Mon, 12 Jun 2023 10:38:28 +0200 Subject: [PATCH 03/34] createpasskeyregistrationlink --- apps/login/app/(login)/passkey/add/page.tsx | 13 ++-- apps/login/app/session/route.ts | 2 + apps/login/lib/zitadel.ts | 73 +++++++++++++-------- apps/login/ui/Alert.tsx | 26 +++++++- apps/login/ui/Info.tsx | 14 ++++ packages/zitadel-server/src/server.ts | 4 -- 6 files changed, 93 insertions(+), 39 deletions(-) create mode 100644 apps/login/ui/Info.tsx diff --git a/apps/login/app/(login)/passkey/add/page.tsx b/apps/login/app/(login)/passkey/add/page.tsx index 8f5a813ec22..e367a81c642 100644 --- a/apps/login/app/(login)/passkey/add/page.tsx +++ b/apps/login/app/(login)/passkey/add/page.tsx @@ -1,9 +1,8 @@ import { getSession, server } from "#/lib/zitadel"; -import Alert from "#/ui/Alert"; +import Alert, { AlertType } from "#/ui/Alert"; import RegisterPasskey from "#/ui/RegisterPasskey"; import UserAvatar from "#/ui/UserAvatar"; import { getMostRecentCookieWithLoginname } from "#/utils/cookies"; -import { useRouter } from "next/navigation"; export default async function Page({ searchParams, @@ -15,7 +14,6 @@ export default async function Page({ async function loadSession(loginName?: string) { const recent = await getMostRecentCookieWithLoginname(loginName); - return getSession(server, recent.id, recent.token).then((response) => { if (response?.session) { return response.session; @@ -27,7 +25,14 @@ export default async function Page({ return (

Register Passkey

-

Setup your device for passkeys.

+

+ Setup your user to authenticate with passkeys. +

+ + + A passkey is an authentication method on a device like your fingerprint, + Apple FaceID or similar. + {!sessionFactors && (
diff --git a/apps/login/app/session/route.ts b/apps/login/app/session/route.ts index 0d4da683874..4f06502a69b 100644 --- a/apps/login/app/session/route.ts +++ b/apps/login/app/session/route.ts @@ -94,6 +94,8 @@ export async function PUT(request: NextRequest) { loginName: session.factors?.user?.loginName ?? "", }; + console.log("new token", recent.token, newCookie.token); + return updateSessionCookie(sessionCookie.id, newCookie) .then(() => { return NextResponse.json({ factors: session.factors }); diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index 9459bab856a..fbb5043396d 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -22,6 +22,7 @@ import { DeleteSessionResponse, VerifyPasskeyRegistrationResponse, } from "@zitadel/server"; +import { Metadata } from "nice-grpc"; export const zitadelConfig: ZitadelServerOptions = { name: "zitadel login", @@ -185,24 +186,8 @@ export async function setEmail( ); } -/** - * - * @param server - * @param userId the id of the user where the email should be set - * @returns the newly set email - */ -export async function registerPasskey( - server: ZitadelServer, - userId: string -): Promise { - const userservice = user.getUser(server); - return userservice.registerPasskey( - { - userId, - }, - {} - ); -} +const bearerTokenMetadata = (token: string) => + new Metadata({ authorization: `Bearer ${token}` }); /** * @@ -214,22 +199,22 @@ export async function createPasskeyRegistrationLink( userId: string, sessionToken: string ): Promise { - // this actions will be made from the currently seleected user - const zitadelConfig: ZitadelServerOptions = { - name: "zitadel login", - apiUrl: process.env.ZITADEL_API_URL ?? "", - token: `${sessionToken}`, - }; - - const server: ZitadelServer = initializeServer(zitadelConfig); + // this actions will be made from the currently seleected user + // const zitadelConfig: ZitadelServerOptions = { + // name: "zitadel login", + // apiUrl: process.env.ZITADEL_API_URL ?? "", + // token: "", + // }; + // const authserver: ZitadelServer = initializeServer(zitadelConfig); + // console.log("server", authserver); const userservice = user.getUser(server); return userservice.createPasskeyRegistrationLink( { userId, - // returnCode: new ReturnPasskeyRegistrationCode(), - }, - {} + returnCode: {}, + } + // { metadata: bearerTokenMetadata(sessionToken) } ); } @@ -257,4 +242,34 @@ export async function verifyPasskeyRegistration( {} ); } + +/** + * + * @param server + * @param userId the id of the user where the email should be set + * @returns the newly set email + */ +export async function registerPasskey( + userId: string, + sessionToken: string +): Promise { + // this actions will be made from the currently seleected user + const zitadelConfig: ZitadelServerOptions = { + name: "zitadel login", + apiUrl: process.env.ZITADEL_API_URL ?? "", + token: "", + }; + + const authserver: ZitadelServer = initializeServer(zitadelConfig); + console.log("server", authserver); + const userservice = user.getUser(server); + return userservice.registerPasskey( + { + userId, + // returnCode: new ReturnPasskeyRegistrationCode(), + }, + { metadata: bearerTokenMetadata(sessionToken) } + ); +} + export { server }; diff --git a/apps/login/ui/Alert.tsx b/apps/login/ui/Alert.tsx index 59392e8c7c5..bd828c82b90 100644 --- a/apps/login/ui/Alert.tsx +++ b/apps/login/ui/Alert.tsx @@ -1,12 +1,34 @@ import { ExclamationTriangleIcon } from "@heroicons/react/24/outline"; +import clsx from "clsx"; type Props = { children: React.ReactNode; + type?: AlertType; }; -export default function Alert({ children }: Props) { +export enum AlertType { + ALERT, + INFO, +} + +const yellow = + "border-yellow-600/40 dark:border-yellow-500/20 bg-yellow-200/30 text-yellow-600 dark:bg-yellow-700/20 dark:text-yellow-200"; +const red = + "border-red-600/40 dark:border-red-500/20 bg-red-200/30 text-red-600 dark:bg-red-700/20 dark:text-red-200"; +const neutral = + "border-divider-light dark:border-divider-dark bg-black/5 text-gray-600 dark:bg-white/10 dark:text-gray-200"; + +export default function Alert({ children, type = AlertType.ALERT }: Props) { return ( -
+
{children}
diff --git a/apps/login/ui/Info.tsx b/apps/login/ui/Info.tsx new file mode 100644 index 00000000000..59392e8c7c5 --- /dev/null +++ b/apps/login/ui/Info.tsx @@ -0,0 +1,14 @@ +import { ExclamationTriangleIcon } from "@heroicons/react/24/outline"; + +type Props = { + children: React.ReactNode; +}; + +export default function Alert({ children }: Props) { + return ( +
+ + {children} +
+ ); +} diff --git a/packages/zitadel-server/src/server.ts b/packages/zitadel-server/src/server.ts index a74e55189ff..62ba9566ef8 100644 --- a/packages/zitadel-server/src/server.ts +++ b/packages/zitadel-server/src/server.ts @@ -1,8 +1,4 @@ import { createChannel, createClientFactory } from "nice-grpc"; -import { - SettingsServiceClient, - SettingsServiceDefinition, -} from "./proto/server/zitadel/settings/v2alpha/settings_service"; import { authMiddleware } from "./middleware"; import { CompatServiceDefinition } from "nice-grpc/lib/service-definitions"; From 69301d789dba0b14ecc0418ae99a93787129bdff Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Tue, 13 Jun 2023 17:43:37 +0200 Subject: [PATCH 04/34] navigator, utils --- apps/login/app/passkeys/route.ts | 17 ++-- apps/login/lib/zitadel.ts | 14 ++-- apps/login/ui/RegisterPasskey.tsx | 119 ++++++++++++++++++++++++++- apps/login/utils/base64.ts | 63 ++++++++++++++ packages/zitadel-server/src/index.ts | 1 + 5 files changed, 195 insertions(+), 19 deletions(-) create mode 100644 apps/login/utils/base64.ts diff --git a/apps/login/app/passkeys/route.ts b/apps/login/app/passkeys/route.ts index 394e7ae4972..8f511627013 100644 --- a/apps/login/app/passkeys/route.ts +++ b/apps/login/app/passkeys/route.ts @@ -1,6 +1,7 @@ import { createPasskeyRegistrationLink, getSession, + registerPasskey, server, } from "#/lib/zitadel"; import { getSessionCookieById } from "#/utils/cookies"; @@ -12,7 +13,6 @@ export async function POST(request: NextRequest) { const { sessionId } = body; const sessionCookie = await getSessionCookieById(sessionId); - console.log(sessionCookie); const session = await getSession( server, @@ -20,14 +20,15 @@ export async function POST(request: NextRequest) { sessionCookie.token ); - if (session?.session && session.session?.factors?.user?.id) { - console.log(session.session.factors.user.id, sessionCookie.token); - return createPasskeyRegistrationLink( - session.session.factors.user.id, - sessionCookie.token - ) + const userId = session?.session?.factors?.user?.id; + + if (userId) { + return createPasskeyRegistrationLink(userId, sessionCookie.token) .then((resp) => { - return NextResponse.json(resp); + const code = resp.code; + return registerPasskey(userId, code).then((resp) => { + return NextResponse.json(resp); + }); }) .catch((error) => { return NextResponse.json(error, { status: 500 }); diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index fbb5043396d..8430e10765d 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -251,7 +251,7 @@ export async function verifyPasskeyRegistration( */ export async function registerPasskey( userId: string, - sessionToken: string + code: { id: string; code: string } ): Promise { // this actions will be made from the currently seleected user const zitadelConfig: ZitadelServerOptions = { @@ -263,13 +263,11 @@ export async function registerPasskey( const authserver: ZitadelServer = initializeServer(zitadelConfig); console.log("server", authserver); const userservice = user.getUser(server); - return userservice.registerPasskey( - { - userId, - // returnCode: new ReturnPasskeyRegistrationCode(), - }, - { metadata: bearerTokenMetadata(sessionToken) } - ); + return userservice.registerPasskey({ + userId, + code, + // returnCode: new ReturnPasskeyRegistrationCode(), + }); } export { server }; diff --git a/apps/login/ui/RegisterPasskey.tsx b/apps/login/ui/RegisterPasskey.tsx index fcca2807507..98267c43fc7 100644 --- a/apps/login/ui/RegisterPasskey.tsx +++ b/apps/login/ui/RegisterPasskey.tsx @@ -6,7 +6,8 @@ import { useForm } from "react-hook-form"; import { useRouter } from "next/navigation"; import { Spinner } from "./Spinner"; import Alert from "./Alert"; - +import { RegisterPasskeyResponse } from "@zitadel/server"; +import { coerceToArrayBuffer, coerceToBase64Url } from "#/utils/base64"; type Inputs = {}; type Props = { @@ -50,8 +51,120 @@ export default function RegisterPasskey({ sessionId }: Props) { } function submitRegisterAndContinue(value: Inputs): Promise { - return submitRegister().then((resp: any) => { - return router.push(`/accounts`); + return submitRegister().then((resp: RegisterPasskeyResponse) => { + console.log(resp.publicKeyCredentialCreationOptions?.publicKey); + if ( + resp.publicKeyCredentialCreationOptions && + resp.publicKeyCredentialCreationOptions.publicKey + ) { + resp.publicKeyCredentialCreationOptions.publicKey.challenge = + coerceToArrayBuffer( + resp.publicKeyCredentialCreationOptions.publicKey.challenge, + "challenge" + ); + resp.publicKeyCredentialCreationOptions.publicKey.user.id = + coerceToArrayBuffer( + resp.publicKeyCredentialCreationOptions.publicKey.user.id, + "challenge" + ); + if ( + resp.publicKeyCredentialCreationOptions.publicKey.excludeCredentials + ) { + resp.publicKeyCredentialCreationOptions.publicKey.excludeCredentials.map( + (cred: any) => { + cred.id = coerceToArrayBuffer( + cred.id as string, + "excludeCredentials.id" + ); + return cred; + } + ); + } + + navigator.credentials + .create(resp.publicKeyCredentialCreationOptions) + .then((resp) => { + console.log(resp); + if ( + resp && + (resp as any).response.attestationObject && + (resp as any).response.clientDataJSON && + (resp as any).rawId + ) { + const attestationObject = (resp as any).response + .attestationObject; + const clientDataJSON = (resp as any).response.clientDataJSON; + const rawId = (resp as any).rawId; + + const data = JSON.stringify({ + id: resp.id, + rawId: coerceToBase64Url(rawId, "rawId"), + type: resp.type, + response: { + attestationObject: coerceToBase64Url( + attestationObject, + "attestationObject" + ), + clientDataJSON: coerceToBase64Url( + clientDataJSON, + "clientDataJSON" + ), + }, + }); + + const base64 = btoa(data); + + return base64; + // if (this.type === U2FComponentDestination.MFA) { + // this.service + // .verifyMyMultiFactorU2F(base64, this.name) + // .then(() => { + // this.translate + // .get("USER.MFA.U2F_SUCCESS") + // .pipe(take(1)) + // .subscribe((msg) => { + // this.toast.showInfo(msg); + // }); + // this.dialogRef.close(true); + // this.loading = false; + // }) + // .catch((error) => { + // this.loading = false; + // this.toast.showError(error); + // }); + // } else if (this.type === U2FComponentDestination.PASSWORDLESS) { + // this.service + // .verifyMyPasswordless(base64, this.name) + // .then(() => { + // this.translate + // .get("USER.PASSWORDLESS.U2F_SUCCESS") + // .pipe(take(1)) + // .subscribe((msg) => { + // this.toast.showInfo(msg); + // }); + // this.dialogRef.close(true); + // this.loading = false; + // }) + // .catch((error) => { + // this.loading = false; + // this.toast.showError(error); + // }); + // } + } else { + setLoading(false); + setError("An error on registering passkey"); + return null; + } + }) + .catch((error) => { + console.error(error); + setLoading(false); + // setError(error); + + return null; + }); + } + // return router.push(`/accounts`); }); } diff --git a/apps/login/utils/base64.ts b/apps/login/utils/base64.ts new file mode 100644 index 00000000000..967cdc8d17a --- /dev/null +++ b/apps/login/utils/base64.ts @@ -0,0 +1,63 @@ +export function coerceToBase64Url(thing: any, name: string) { + // Array or ArrayBuffer to Uint8Array + if (Array.isArray(thing)) { + thing = Uint8Array.from(thing); + } + + if (thing instanceof ArrayBuffer) { + thing = new Uint8Array(thing); + } + + // Uint8Array to base64 + if (thing instanceof Uint8Array) { + var str = ""; + var len = thing.byteLength; + + for (var i = 0; i < len; i++) { + str += String.fromCharCode(thing[i]); + } + thing = window.btoa(str); + } + + if (typeof thing !== "string") { + throw new Error("could not coerce '" + name + "' to string"); + } + + // base64 to base64url + // NOTE: "=" at the end of challenge is optional, strip it off here + thing = thing.replace(/\+/g, "-").replace(/\//g, "_").replace(/=*$/g, ""); + + return thing; +} + +export function coerceToArrayBuffer(thing: any, name: string) { + if (typeof thing === "string") { + // base64url to base64 + thing = thing.replace(/-/g, "+").replace(/_/g, "/"); + + // base64 to Uint8Array + var str = window.atob(thing); + var bytes = new Uint8Array(str.length); + for (var i = 0; i < str.length; i++) { + bytes[i] = str.charCodeAt(i); + } + thing = bytes; + } + + // Array to Uint8Array + if (Array.isArray(thing)) { + thing = new Uint8Array(thing); + } + + // Uint8Array to ArrayBuffer + if (thing instanceof Uint8Array) { + thing = thing.buffer; + } + + // error if none of the above worked + if (!(thing instanceof ArrayBuffer)) { + throw new TypeError("could not coerce '" + name + "' to ArrayBuffer"); + } + + return thing; +} diff --git a/packages/zitadel-server/src/index.ts b/packages/zitadel-server/src/index.ts index eb684cd0dd2..e7b6d2e77af 100644 --- a/packages/zitadel-server/src/index.ts +++ b/packages/zitadel-server/src/index.ts @@ -29,6 +29,7 @@ export { AddHumanUserResponse, VerifyEmailResponse, VerifyPasskeyRegistrationResponse, + RegisterPasskeyResponse, } from "./proto/server/zitadel/user/v2alpha/user_service"; export { type LegalAndSupportSettings } from "./proto/server/zitadel/settings/v2alpha/legal_settings"; From 73d5c6e70c19265bd8f37d18c851a4858109f1dc Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 15 Jun 2023 13:58:32 +0200 Subject: [PATCH 05/34] passkey verify, page styles --- acceptance/docker-compose.yaml | 37 +- apps/login/app/(login)/passkey/add/page.tsx | 33 +- apps/login/app/passkeys/route.ts | 6 +- apps/login/app/passkeys/verify/route.ts | 51 + apps/login/lib/zitadel.ts | 33 +- apps/login/styles/globals.scss | 2 +- apps/login/ui/Alert.tsx | 14 +- apps/login/ui/RegisterPasskey.tsx | 43 +- apps/login/ui/UserAvatar.tsx | 4 +- package.json | 2 +- packages/zitadel-server/src/index.ts | 4 + pnpm-lock.yaml | 3148 ++++++++++--------- 12 files changed, 1791 insertions(+), 1586 deletions(-) create mode 100644 apps/login/app/passkeys/verify/route.ts diff --git a/acceptance/docker-compose.yaml b/acceptance/docker-compose.yaml index 4f359ee3b04..d12a4291a13 100644 --- a/acceptance/docker-compose.yaml +++ b/acceptance/docker-compose.yaml @@ -1,40 +1,45 @@ -version: '3.8' +version: "3.8" services: zitadel: - user: '${ZITADEL_DEV_UID}' - image: '${ZITADEL_IMAGE:-ghcr.io/zitadel/zitadel:latest}' + user: "${ZITADEL_DEV_UID}" + image: "${ZITADEL_IMAGE:-ghcr.io/zitadel/zitadel:latest}" command: 'start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled --config /zitadel.yaml --steps /zitadel.yaml' ports: - - "8080:8080" + - "8080:8080" volumes: - ./machinekey:/machinekey - ./zitadel.yaml:/zitadel.yaml depends_on: db: - condition: 'service_healthy' + condition: "service_healthy" db: - image: 'cockroachdb/cockroach:v22.2.2' - command: 'start-single-node --insecure --http-addr :9090' + image: "cockroachdb/cockroach:v22.2.2" + command: "start-single-node --insecure --http-addr :9090" healthcheck: - test: ['CMD', 'curl', '-f', 'http://localhost:9090/health?ready=1'] - interval: '10s' - timeout: '30s' + test: ["CMD", "curl", "-f", "http://localhost:9090/health?ready=1"] + interval: "10s" + timeout: "30s" retries: 5 - start_period: '20s' + start_period: "20s" ports: - "26257:26257" - "9090:9090" wait_for_zitadel: image: curlimages/curl:8.00.1 - command: [ "/bin/sh", "-c", "i=0; while ! curl http://zitadel:8080/debug/ready && [ $$i -lt 30 ]; do sleep 1; i=$$((i+1)); done; [ $$i -eq 30 ] && exit 1 || exit 0" ] + command: + [ + "/bin/sh", + "-c", + "i=0; while ! curl http://zitadel:8080/debug/ready && [ $$i -lt 30 ]; do sleep 1; i=$$((i+1)); done; [ $$i -eq 30 ] && exit 1 || exit 0", + ] depends_on: - zitadel setup: - user: '${ZITADEL_DEV_UID}' + user: "${ZITADEL_DEV_UID}" container_name: setup build: . environment: @@ -42,8 +47,8 @@ services: SERVICE: http://zitadel:8080 WRITE_ENVIRONMENT_FILE: /apps/login/.env.local volumes: - - "./machinekey:/key" - - "../apps/login:/apps/login" + - "./machinekey:/key" + - "../apps/login:/apps/login" depends_on: wait_for_zitadel: - condition: 'service_completed_successfully' + condition: "service_completed_successfully" diff --git a/apps/login/app/(login)/passkey/add/page.tsx b/apps/login/app/(login)/passkey/add/page.tsx index e367a81c642..4baa9d351da 100644 --- a/apps/login/app/(login)/passkey/add/page.tsx +++ b/apps/login/app/(login)/passkey/add/page.tsx @@ -24,14 +24,31 @@ export default async function Page({ console.log(sessionFactors); return (
-

Register Passkey

+

Use your passkey to confirm it’s really you

+ + {sessionFactors && ( + + )}

- Setup your user to authenticate with passkeys. + Your device will ask for your fingerprint, face, or screen lock

- A passkey is an authentication method on a device like your fingerprint, - Apple FaceID or similar. + + A passkey is an authentication method on a device like your + fingerprint, Apple FaceID or similar.{" "} + + Passwordless Authentication + + {!sessionFactors && ( @@ -43,14 +60,6 @@ export default async function Page({
)} - {sessionFactors && ( - - )} - {sessionFactors?.id && }
); diff --git a/apps/login/app/passkeys/route.ts b/apps/login/app/passkeys/route.ts index 8f511627013..6991668dd5d 100644 --- a/apps/login/app/passkeys/route.ts +++ b/apps/login/app/passkeys/route.ts @@ -23,14 +23,16 @@ export async function POST(request: NextRequest) { const userId = session?.session?.factors?.user?.id; if (userId) { - return createPasskeyRegistrationLink(userId, sessionCookie.token) + return createPasskeyRegistrationLink(userId) .then((resp) => { const code = resp.code; + console.log("code", code); return registerPasskey(userId, code).then((resp) => { return NextResponse.json(resp); }); }) .catch((error) => { + console.log("error on creating passkey registration link"); return NextResponse.json(error, { status: 500 }); }); } else { @@ -40,6 +42,6 @@ export async function POST(request: NextRequest) { ); } } else { - return NextResponse.json({}, { status: 500 }); + return NextResponse.json({}, { status: 400 }); } } diff --git a/apps/login/app/passkeys/verify/route.ts b/apps/login/app/passkeys/verify/route.ts new file mode 100644 index 00000000000..bda30818fda --- /dev/null +++ b/apps/login/app/passkeys/verify/route.ts @@ -0,0 +1,51 @@ +import { + createPasskeyRegistrationLink, + getSession, + registerPasskey, + server, + verifyPasskeyRegistration, +} from "#/lib/zitadel"; +import { getSessionCookieById } from "#/utils/cookies"; +import { NextRequest, NextResponse } from "next/server"; + +export async function POST(request: NextRequest) { + const body = await request.json(); + if (body) { + const { passkeyId, passkeyName, publicKeyCredential, sessionId } = body; + + const sessionCookie = await getSessionCookieById(sessionId); + + const session = await getSession( + server, + sessionCookie.id, + sessionCookie.token + ); + + const userId = session?.session?.factors?.user?.id; + + if (userId) { + return verifyPasskeyRegistration( + server, + passkeyId, + passkeyName, + publicKeyCredential, + userId + ) + .then((resp) => { + console.log("verifyresponse", resp); + return NextResponse.json(resp); + }) + .catch((error) => { + console.log("error on verifying passkey"); + return NextResponse.json(error, { status: 500 }); + }); + } else { + return NextResponse.json( + { details: "could not get session" }, + { status: 500 } + ); + } + } else { + return NextResponse.json({}, { status: 400 }); + } +} diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index 8430e10765d..41cdcd57802 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -20,7 +20,9 @@ import { VerifyEmailResponse, SetSessionResponse, DeleteSessionResponse, + VerifyPasskeyRegistrationRequest, VerifyPasskeyRegistrationResponse, + orgMetadata, } from "@zitadel/server"; import { Metadata } from "nice-grpc"; @@ -196,26 +198,14 @@ const bearerTokenMetadata = (token: string) => * @returns the newly set email */ export async function createPasskeyRegistrationLink( - userId: string, - sessionToken: string + userId: string ): Promise { - // this actions will be made from the currently seleected user - // const zitadelConfig: ZitadelServerOptions = { - // name: "zitadel login", - // apiUrl: process.env.ZITADEL_API_URL ?? "", - // token: "", - // }; - - // const authserver: ZitadelServer = initializeServer(zitadelConfig); - // console.log("server", authserver); const userservice = user.getUser(server); - return userservice.createPasskeyRegistrationLink( - { - userId, - returnCode: {}, - } - // { metadata: bearerTokenMetadata(sessionToken) } - ); + + return userservice.createPasskeyRegistrationLink({ + userId, + returnCode: {}, + }); } /** @@ -228,10 +218,15 @@ export async function verifyPasskeyRegistration( server: ZitadelServer, passkeyId: string, passkeyName: string, - publicKeyCredential: any, + publicKeyCredential: + | { + [key: string]: any; + } + | undefined, userId: string ): Promise { const userservice = user.getUser(server); + console.log(passkeyId, passkeyName, publicKeyCredential, userId); return userservice.verifyPasskeyRegistration( { passkeyId, diff --git a/apps/login/styles/globals.scss b/apps/login/styles/globals.scss index 6e7c7be3504..4fb9f4e72e1 100755 --- a/apps/login/styles/globals.scss +++ b/apps/login/styles/globals.scss @@ -9,7 +9,7 @@ @layer base { h1, .ztdl-h1 { - @apply text-2xl; + @apply text-2xl text-center; } .ztdl-p { diff --git a/apps/login/ui/Alert.tsx b/apps/login/ui/Alert.tsx index bd828c82b90..c5bf05ea8f2 100644 --- a/apps/login/ui/Alert.tsx +++ b/apps/login/ui/Alert.tsx @@ -1,4 +1,7 @@ -import { ExclamationTriangleIcon } from "@heroicons/react/24/outline"; +import { + ExclamationTriangleIcon, + InformationCircleIcon, +} from "@heroicons/react/24/outline"; import clsx from "clsx"; type Props = { @@ -29,8 +32,13 @@ export default function Alert({ children, type = AlertType.ALERT }: Props) { } )} > - - {children} + {type === AlertType.ALERT && ( + + )} + {type === AlertType.INFO && ( + + )} + {children}
); } diff --git a/apps/login/ui/RegisterPasskey.tsx b/apps/login/ui/RegisterPasskey.tsx index 98267c43fc7..20cd87bd320 100644 --- a/apps/login/ui/RegisterPasskey.tsx +++ b/apps/login/ui/RegisterPasskey.tsx @@ -50,9 +50,40 @@ export default function RegisterPasskey({ sessionId }: Props) { return response; } + async function submitVerify( + passkeyId: string, + passkeyName: string, + publicKeyCredential: any, + sessionId: string + ) { + setLoading(true); + const res = await fetch("/passkeys/verify", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + passkeyId, + passkeyName, + publicKeyCredential, + sessionId, + }), + }); + + const response = await res.json(); + + setLoading(false); + if (!res.ok) { + setError(response.details); + return Promise.reject(response.details); + } + return response; + } + function submitRegisterAndContinue(value: Inputs): Promise { return submitRegister().then((resp: RegisterPasskeyResponse) => { - console.log(resp.publicKeyCredentialCreationOptions?.publicKey); + const passkeyId = resp.passkeyId; + console.log("passkeyId", passkeyId); if ( resp.publicKeyCredentialCreationOptions && resp.publicKeyCredentialCreationOptions.publicKey @@ -96,10 +127,11 @@ export default function RegisterPasskey({ sessionId }: Props) { const clientDataJSON = (resp as any).response.clientDataJSON; const rawId = (resp as any).rawId; - const data = JSON.stringify({ + const data = { id: resp.id, rawId: coerceToBase64Url(rawId, "rawId"), type: resp.type, + // response: (resp as any).response, response: { attestationObject: coerceToBase64Url( attestationObject, @@ -110,11 +142,10 @@ export default function RegisterPasskey({ sessionId }: Props) { "clientDataJSON" ), }, - }); + }; + console.log(data); - const base64 = btoa(data); - - return base64; + return submitVerify(passkeyId, "name", data, sessionId); // if (this.type === U2FComponentDestination.MFA) { // this.service // .verifyMyMultiFactorU2F(base64, this.name) diff --git a/apps/login/ui/UserAvatar.tsx b/apps/login/ui/UserAvatar.tsx index 33205b899bd..e12ddecdb74 100644 --- a/apps/login/ui/UserAvatar.tsx +++ b/apps/login/ui/UserAvatar.tsx @@ -14,7 +14,7 @@ export default function UserAvatar({ showDropdown, }: Props) { return ( -
+
diff --git a/package.json b/package.json index 7ba990f7e2a..8dd55a713d6 100755 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "eslint": "^7.32.0", "eslint-config-zitadel": "workspace:*", "prettier": "^2.5.1", - "turbo": "^1.9.8" + "turbo": "^1.10.3" }, "packageManager": "pnpm@7.15.0" } \ No newline at end of file diff --git a/packages/zitadel-server/src/index.ts b/packages/zitadel-server/src/index.ts index e7b6d2e77af..d72d275ba98 100644 --- a/packages/zitadel-server/src/index.ts +++ b/packages/zitadel-server/src/index.ts @@ -28,8 +28,12 @@ export { export { AddHumanUserResponse, VerifyEmailResponse, + VerifyPasskeyRegistrationRequest, VerifyPasskeyRegistrationResponse, + RegisterPasskeyRequest, RegisterPasskeyResponse, + CreatePasskeyRegistrationLinkResponse, + CreatePasskeyRegistrationLinkRequest, } from "./proto/server/zitadel/user/v2alpha/user_service"; export { type LegalAndSupportSettings } from "./proto/server/zitadel/settings/v2alpha/legal_settings"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 713adc71832..e1464cb7909 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,438 +1,324 @@ -lockfileVersion: '6.1' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false +lockfileVersion: 5.4 importers: .: + specifiers: + '@changesets/cli': ^2.22.0 + eslint: ^7.32.0 + eslint-config-zitadel: workspace:* + prettier: ^2.5.1 + turbo: ^1.10.3 devDependencies: - '@changesets/cli': - specifier: ^2.22.0 - version: 2.25.2 - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-config-zitadel: - specifier: workspace:* - version: link:packages/eslint-config-zitadel - prettier: - specifier: ^2.5.1 - version: 2.8.0 - turbo: - specifier: ^1.9.8 - version: 1.9.8 + '@changesets/cli': 2.25.2 + eslint: 7.32.0 + eslint-config-zitadel: link:packages/eslint-config-zitadel + prettier: 2.8.0 + turbo: 1.10.3 apps/login: + specifiers: + '@bufbuild/buf': ^1.14.0 + '@headlessui/react': ^1.7.14 + '@heroicons/react': 2.0.13 + '@jest/types': ^29.5.0 + '@tailwindcss/forms': 0.5.3 + '@testing-library/jest-dom': ^5.16.5 + '@testing-library/react': ^14.0.0 + '@types/jest': ^29.5.1 + '@types/ms': 0.7.31 + '@types/node': 18.11.9 + '@types/react': 18.2.8 + '@types/react-dom': 18.0.9 + '@types/testing-library__jest-dom': ^5.14.6 + '@types/tinycolor2': 1.4.3 + '@types/uuid': ^9.0.1 + '@vercel/analytics': ^1.0.0 + '@vercel/git-hooks': 1.0.0 + '@zitadel/next': workspace:* + '@zitadel/react': workspace:* + '@zitadel/server': workspace:* + '@zitadel/tsconfig': workspace:* + autoprefixer: 10.4.13 + clsx: 1.2.1 + date-fns: 2.29.3 + del-cli: 5.0.0 + eslint-config-zitadel: workspace:* + grpc-tools: 1.11.3 + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 + lint-staged: 13.0.3 + make-dir-cli: 3.0.0 + moment: ^2.29.4 + next: 13.4.2 + next-themes: ^0.2.1 + nice-grpc: 2.0.1 + postcss: 8.4.21 + prettier-plugin-tailwindcss: 0.1.13 + react: 18.2.0 + react-dom: 18.2.0 + react-hook-form: 7.39.5 + sass: ^1.62.0 + tailwindcss: 3.2.4 + tinycolor2: 1.4.2 + ts-jest: ^29.1.0 + ts-node: ^10.9.1 + ts-proto: ^1.139.0 + typescript: 5.0.4 + zitadel-tailwind-config: workspace:* dependencies: - '@headlessui/react': - specifier: ^1.7.14 - version: 1.7.14(react-dom@18.2.0)(react@18.2.0) - '@heroicons/react': - specifier: 2.0.13 - version: 2.0.13(react@18.2.0) - '@tailwindcss/forms': - specifier: 0.5.3 - version: 0.5.3(tailwindcss@3.2.4) - '@vercel/analytics': - specifier: ^1.0.0 - version: 1.0.0(react@18.2.0) - '@zitadel/next': - specifier: workspace:* - version: link:../../packages/zitadel-next - '@zitadel/react': - specifier: workspace:* - version: link:../../packages/zitadel-react - '@zitadel/server': - specifier: workspace:* - version: link:../../packages/zitadel-server - clsx: - specifier: 1.2.1 - version: 1.2.1 - date-fns: - specifier: 2.29.3 - version: 2.29.3 - moment: - specifier: ^2.29.4 - version: 2.29.4 - next: - specifier: 13.4.2 - version: 13.4.2(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0) - next-themes: - specifier: ^0.2.1 - version: 0.2.1(next@13.4.2)(react-dom@18.2.0)(react@18.2.0) - nice-grpc: - specifier: 2.0.1 - version: 2.0.1 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: 7.39.5 - version: 7.39.5(react@18.2.0) - sass: - specifier: ^1.62.0 - version: 1.62.0 - tinycolor2: - specifier: 1.4.2 - version: 1.4.2 + '@headlessui/react': 1.7.14_biqbaboplfbrettd7655fr4n2y + '@heroicons/react': 2.0.13_react@18.2.0 + '@tailwindcss/forms': 0.5.3_tailwindcss@3.2.4 + '@vercel/analytics': 1.0.0_react@18.2.0 + '@zitadel/next': link:../../packages/zitadel-next + '@zitadel/react': link:../../packages/zitadel-react + '@zitadel/server': link:../../packages/zitadel-server + clsx: 1.2.1 + date-fns: 2.29.3 + moment: 2.29.4 + next: 13.4.2_bteaqif5pz4zkv4h4kccxuyuxu + next-themes: 0.2.1_cmp7sjki5xcmfyvhcokzzink7a + nice-grpc: 2.0.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-hook-form: 7.39.5_react@18.2.0 + sass: 1.62.0 + tinycolor2: 1.4.2 devDependencies: - '@bufbuild/buf': - specifier: ^1.14.0 - version: 1.15.0 - '@jest/types': - specifier: ^29.5.0 - version: 29.5.0 - '@testing-library/jest-dom': - specifier: ^5.16.5 - version: 5.16.5 - '@testing-library/react': - specifier: ^14.0.0 - version: 14.0.0(react-dom@18.2.0)(react@18.2.0) - '@types/jest': - specifier: ^29.5.1 - version: 29.5.1 - '@types/ms': - specifier: 0.7.31 - version: 0.7.31 - '@types/node': - specifier: 18.11.9 - version: 18.11.9 - '@types/react': - specifier: 18.2.8 - version: 18.2.8 - '@types/react-dom': - specifier: 18.0.9 - version: 18.0.9 - '@types/testing-library__jest-dom': - specifier: ^5.14.6 - version: 5.14.6 - '@types/tinycolor2': - specifier: 1.4.3 - version: 1.4.3 - '@types/uuid': - specifier: ^9.0.1 - version: 9.0.1 - '@vercel/git-hooks': - specifier: 1.0.0 - version: 1.0.0 - '@zitadel/tsconfig': - specifier: workspace:* - version: link:../../packages/zitadel-tsconfig - autoprefixer: - specifier: 10.4.13 - version: 10.4.13(postcss@8.4.21) - del-cli: - specifier: 5.0.0 - version: 5.0.0 - eslint-config-zitadel: - specifier: workspace:* - version: link:../../packages/eslint-config-zitadel - grpc-tools: - specifier: 1.11.3 - version: 1.11.3 - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) - jest-environment-jsdom: - specifier: ^29.5.0 - version: 29.5.0 - lint-staged: - specifier: 13.0.3 - version: 13.0.3 - make-dir-cli: - specifier: 3.0.0 - version: 3.0.0 - postcss: - specifier: 8.4.21 - version: 8.4.21 - prettier-plugin-tailwindcss: - specifier: 0.1.13 - version: 0.1.13(prettier@2.8.0) - tailwindcss: - specifier: 3.2.4 - version: 3.2.4(postcss@8.4.21)(ts-node@10.9.1) - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.1)(@jest/types@29.5.0)(jest@29.5.0)(typescript@5.0.4) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.11.9)(typescript@5.0.4) - ts-proto: - specifier: ^1.139.0 - version: 1.146.0 - typescript: - specifier: 5.0.4 - version: 5.0.4 - zitadel-tailwind-config: - specifier: workspace:* - version: link:../../packages/zitadel-tailwind-config + '@bufbuild/buf': 1.15.0 + '@jest/types': 29.5.0 + '@testing-library/jest-dom': 5.16.5 + '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y + '@types/jest': 29.5.2 + '@types/ms': 0.7.31 + '@types/node': 18.11.9 + '@types/react': 18.2.8 + '@types/react-dom': 18.0.9 + '@types/testing-library__jest-dom': 5.14.6 + '@types/tinycolor2': 1.4.3 + '@types/uuid': 9.0.1 + '@vercel/git-hooks': 1.0.0 + '@zitadel/tsconfig': link:../../packages/zitadel-tsconfig + autoprefixer: 10.4.13_postcss@8.4.21 + del-cli: 5.0.0 + eslint-config-zitadel: link:../../packages/eslint-config-zitadel + grpc-tools: 1.11.3 + jest: 29.5.0_odkjkoia5xunhxkdrka32ib6vi + jest-environment-jsdom: 29.5.0 + lint-staged: 13.0.3 + make-dir-cli: 3.0.0 + postcss: 8.4.21 + prettier-plugin-tailwindcss: 0.1.13_prettier@2.8.0 + tailwindcss: 3.2.4_aesdjsunmf4wiehhujt67my7tu + ts-jest: 29.1.0_7mvqblmutgu6adr4pyrltf7n7q + ts-node: 10.9.1_d2gyhxeuxd6tnmgqdyixls47tq + ts-proto: 1.146.0 + typescript: 5.0.4 + zitadel-tailwind-config: link:../../packages/zitadel-tailwind-config packages/eslint-config-zitadel: + specifiers: + eslint-config-next: latest + eslint-config-prettier: ^8.3.0 + eslint-config-turbo: latest + eslint-plugin-react: 7.28.0 dependencies: - eslint-config-next: - specifier: latest - version: 13.4.0(eslint@7.32.0)(typescript@4.9.3) - eslint-config-prettier: - specifier: ^8.3.0 - version: 8.5.0(eslint@7.32.0) - eslint-config-turbo: - specifier: latest - version: 1.9.3(eslint@7.32.0) - eslint-plugin-react: - specifier: 7.28.0 - version: 7.28.0(eslint@7.32.0) + eslint-config-next: 13.4.5_dewl7jrzrufmm6i6j6pp2pqhja + eslint-config-prettier: 8.5.0_eslint@8.28.0 + eslint-config-turbo: 1.10.3_eslint@8.28.0 + eslint-plugin-react: 7.28.0_eslint@8.28.0 packages/zitadel-client: + specifiers: + '@bufbuild/buf': ^1.14.0 + '@types/jest': ^29.5.1 + '@zitadel/tsconfig': workspace:* + eslint: ^7.32.0 + eslint-config-zitadel: workspace:* + jest: ^29.5.0 + jose: ^4.13.1 + nice-grpc-web: ^3.2.3 + protobufjs: ^7.2.3 + ts-jest: ^29.1.0 + ts-node: ^10.9.1 + ts-proto: ^1.139.0 + tsup: ^5.10.1 + typescript: ^4.9.3 dependencies: - jose: - specifier: ^4.13.1 - version: 4.13.1 - nice-grpc-web: - specifier: ^3.2.3 - version: 3.2.3(ws@8.13.0) - protobufjs: - specifier: ^7.2.3 - version: 7.2.3 + jose: 4.13.1 + nice-grpc-web: 3.2.3_ws@8.13.0 + protobufjs: 7.2.3 devDependencies: - '@bufbuild/buf': - specifier: ^1.14.0 - version: 1.15.0 - '@types/jest': - specifier: ^29.5.1 - version: 29.5.1 - '@zitadel/tsconfig': - specifier: workspace:* - version: link:../zitadel-tsconfig - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-config-zitadel: - specifier: workspace:* - version: link:../eslint-config-zitadel - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.1)(esbuild@0.14.54)(jest@29.5.0)(typescript@4.9.3) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.11.9)(typescript@4.9.3) - ts-proto: - specifier: ^1.139.0 - version: 1.146.0 - tsup: - specifier: ^5.10.1 - version: 5.12.9(postcss@8.4.21)(ts-node@10.9.1)(typescript@4.9.3) - typescript: - specifier: ^4.9.3 - version: 4.9.3 + '@bufbuild/buf': 1.15.0 + '@types/jest': 29.5.2 + '@zitadel/tsconfig': link:../zitadel-tsconfig + eslint: 7.32.0 + eslint-config-zitadel: link:../eslint-config-zitadel + jest: 29.5.0_odkjkoia5xunhxkdrka32ib6vi + ts-jest: 29.1.0_klkfcs562lk2rvu455ax6ckzhq + ts-node: 10.9.1_wup25etrarvlqkprac7h35hj7u + ts-proto: 1.146.0 + tsup: 5.12.9_2dtigtkb225m7ii7q45utxqwgi + typescript: 4.9.3 packages/zitadel-next: + specifiers: + '@types/jest': ^29.5.1 + '@zitadel/tsconfig': workspace:* + eslint: ^7.32.0 + eslint-config-zitadel: workspace:* + jest: ^29.5.0 + next: ^13 + ts-jest: ^29.1.0 + ts-node: ^10.9.1 + tsup: ^5.10.1 + typescript: ^4.9.3 dependencies: - next: - specifier: ^13 - version: 13.2.3(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0) + next: 13.2.3_gxeylg6mfvtzvytsvwl7cjkzse devDependencies: - '@types/jest': - specifier: ^29.5.1 - version: 29.5.1 - '@zitadel/tsconfig': - specifier: workspace:* - version: link:../zitadel-tsconfig - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-config-zitadel: - specifier: workspace:* - version: link:../eslint-config-zitadel - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.1)(esbuild@0.14.54)(jest@29.5.0)(typescript@4.9.3) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.11.9)(typescript@4.9.3) - tsup: - specifier: ^5.10.1 - version: 5.12.9(postcss@8.4.21)(ts-node@10.9.1)(typescript@4.9.3) - typescript: - specifier: ^4.9.3 - version: 4.9.3 + '@types/jest': 29.5.2 + '@zitadel/tsconfig': link:../zitadel-tsconfig + eslint: 7.32.0 + eslint-config-zitadel: link:../eslint-config-zitadel + jest: 29.5.0_odkjkoia5xunhxkdrka32ib6vi + ts-jest: 29.1.0_klkfcs562lk2rvu455ax6ckzhq + ts-node: 10.9.1_wup25etrarvlqkprac7h35hj7u + tsup: 5.12.9_2dtigtkb225m7ii7q45utxqwgi + typescript: 4.9.3 packages/zitadel-react: + specifiers: + '@testing-library/jest-dom': ^5.16.5 + '@testing-library/react': ^14.0.0 + '@types/jest': ^29.5.1 + '@types/react': ^17.0.13 + '@types/react-dom': ^17.0.8 + '@types/testing-library__jest-dom': ^5.14.6 + '@zitadel/tsconfig': workspace:* + autoprefixer: 10.4.13 + eslint: ^7.32.0 + eslint-config-zitadel: workspace:* + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 + postcss: 8.4.21 + react: 18.2.0 + sass: ^1.62.0 + tailwindcss: 3.2.4 + ts-jest: ^29.1.0 + ts-node: ^10.9.1 + tsup: ^5.10.1 + typescript: ^4.9.3 + zitadel-tailwind-config: workspace:* dependencies: - react: - specifier: 18.2.0 - version: 18.2.0 + react: 18.2.0 devDependencies: - '@testing-library/jest-dom': - specifier: ^5.16.5 - version: 5.16.5 - '@testing-library/react': - specifier: ^14.0.0 - version: 14.0.0(react-dom@18.2.0)(react@18.2.0) - '@types/jest': - specifier: ^29.5.1 - version: 29.5.1 - '@types/react': - specifier: ^17.0.13 - version: 17.0.52 - '@types/react-dom': - specifier: ^17.0.8 - version: 17.0.18 - '@types/testing-library__jest-dom': - specifier: ^5.14.6 - version: 5.14.6 - '@zitadel/tsconfig': - specifier: workspace:* - version: link:../zitadel-tsconfig - autoprefixer: - specifier: 10.4.13 - version: 10.4.13(postcss@8.4.21) - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-config-zitadel: - specifier: workspace:* - version: link:../eslint-config-zitadel - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) - jest-environment-jsdom: - specifier: ^29.5.0 - version: 29.5.0 - postcss: - specifier: 8.4.21 - version: 8.4.21 - sass: - specifier: ^1.62.0 - version: 1.62.0 - tailwindcss: - specifier: 3.2.4 - version: 3.2.4(postcss@8.4.21)(ts-node@10.9.1) - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.1)(esbuild@0.14.54)(jest@29.5.0)(typescript@4.9.3) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.11.9)(typescript@4.9.3) - tsup: - specifier: ^5.10.1 - version: 5.12.9(postcss@8.4.21)(ts-node@10.9.1)(typescript@4.9.3) - typescript: - specifier: ^4.9.3 - version: 4.9.3 - zitadel-tailwind-config: - specifier: workspace:* - version: link:../zitadel-tailwind-config + '@testing-library/jest-dom': 5.16.5 + '@testing-library/react': 14.0.0_biqbaboplfbrettd7655fr4n2y + '@types/jest': 29.5.2 + '@types/react': 17.0.52 + '@types/react-dom': 17.0.18 + '@types/testing-library__jest-dom': 5.14.6 + '@zitadel/tsconfig': link:../zitadel-tsconfig + autoprefixer: 10.4.13_postcss@8.4.21 + eslint: 7.32.0 + eslint-config-zitadel: link:../eslint-config-zitadel + jest: 29.5.0_odkjkoia5xunhxkdrka32ib6vi + jest-environment-jsdom: 29.5.0 + postcss: 8.4.21 + sass: 1.62.0 + tailwindcss: 3.2.4_aesdjsunmf4wiehhujt67my7tu + ts-jest: 29.1.0_klkfcs562lk2rvu455ax6ckzhq + ts-node: 10.9.1_wup25etrarvlqkprac7h35hj7u + tsup: 5.12.9_ux7av2aepstrav2yvxv4jydcsa + typescript: 4.9.3 + zitadel-tailwind-config: link:../zitadel-tailwind-config packages/zitadel-server: + specifiers: + '@bufbuild/buf': ^1.14.0 + '@types/jest': ^29.5.1 + '@zitadel/tsconfig': workspace:* + eslint: ^7.32.0 + eslint-config-zitadel: workspace:* + jest: ^29.5.0 + jose: ^4.13.1 + long: ^5.2.1 + nice-grpc: 2.0.1 + nice-grpc-common: ^2.0.2 + protobufjs: ^7.2.3 + ts-jest: ^29.1.0 + ts-node: ^10.9.1 + ts-proto: ^1.139.0 + tsup: ^5.10.1 + typescript: ^4.9.3 dependencies: - jose: - specifier: ^4.13.1 - version: 4.13.1 - long: - specifier: ^5.2.1 - version: 5.2.1 - nice-grpc: - specifier: 2.0.1 - version: 2.0.1 - nice-grpc-common: - specifier: ^2.0.2 - version: 2.0.2 - protobufjs: - specifier: ^7.2.3 - version: 7.2.3 + jose: 4.13.1 + long: 5.2.1 + nice-grpc: 2.0.1 + nice-grpc-common: 2.0.2 + protobufjs: 7.2.3 devDependencies: - '@bufbuild/buf': - specifier: ^1.14.0 - version: 1.15.0 - '@types/jest': - specifier: ^29.5.1 - version: 29.5.1 - '@zitadel/tsconfig': - specifier: workspace:* - version: link:../zitadel-tsconfig - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-config-zitadel: - specifier: workspace:* - version: link:../eslint-config-zitadel - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.1)(esbuild@0.14.54)(jest@29.5.0)(typescript@4.9.3) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@18.11.9)(typescript@4.9.3) - ts-proto: - specifier: ^1.139.0 - version: 1.146.0 - tsup: - specifier: ^5.10.1 - version: 5.12.9(ts-node@10.9.1)(typescript@4.9.3) - typescript: - specifier: ^4.9.3 - version: 4.9.3 + '@bufbuild/buf': 1.15.0 + '@types/jest': 29.5.2 + '@zitadel/tsconfig': link:../zitadel-tsconfig + eslint: 7.32.0 + eslint-config-zitadel: link:../eslint-config-zitadel + jest: 29.5.0_odkjkoia5xunhxkdrka32ib6vi + ts-jest: 29.1.0_klkfcs562lk2rvu455ax6ckzhq + ts-node: 10.9.1_wup25etrarvlqkprac7h35hj7u + ts-proto: 1.146.0 + tsup: 5.12.9_2dtigtkb225m7ii7q45utxqwgi + typescript: 4.9.3 packages/zitadel-tailwind-config: + specifiers: + '@tailwindcss/forms': 0.5.3 + tailwindcss: ^3.2.4 devDependencies: - '@tailwindcss/forms': - specifier: 0.5.3 - version: 0.5.3(tailwindcss@3.2.4) - tailwindcss: - specifier: ^3.2.4 - version: 3.2.4(postcss@8.4.21)(ts-node@10.9.1) + '@tailwindcss/forms': 0.5.3_tailwindcss@3.2.4 + tailwindcss: 3.2.4_postcss@8.4.21 - packages/zitadel-tsconfig: {} + packages/zitadel-tsconfig: + specifiers: {} packages: - /@adobe/css-tools@4.2.0: + /@adobe/css-tools/4.2.0: resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} dev: true - /@ampproject/remapping@2.2.1: + /@ampproject/remapping/2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - /@babel/code-frame@7.12.11: + /@babel/code-frame/7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: '@babel/highlight': 7.18.6 + dev: true - /@babel/code-frame@7.21.4: + /@babel/code-frame/7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data@7.22.3: + /@babel/compat-data/7.22.3: resolution: {integrity: sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.1: + /@babel/core/7.22.1: resolution: {integrity: sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.21.4 '@babel/generator': 7.22.3 - '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-compilation-targets': 7.22.1_@babel+core@7.22.1 '@babel/helper-module-transforms': 7.22.1 '@babel/helpers': 7.22.3 '@babel/parser': 7.22.4 @@ -447,7 +333,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.22.3: + /@babel/generator/7.22.3: resolution: {integrity: sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==} engines: {node: '>=6.9.0'} dependencies: @@ -456,7 +342,7 @@ packages: '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - /@babel/helper-compilation-targets@7.22.1(@babel/core@7.22.1): + /@babel/helper-compilation-targets/7.22.1_@babel+core@7.22.1: resolution: {integrity: sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -469,30 +355,30 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 - /@babel/helper-environment-visitor@7.22.1: + /@babel/helper-environment-visitor/7.22.1: resolution: {integrity: sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name@7.21.0: + /@babel/helper-function-name/7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.21.9 '@babel/types': 7.22.4 - /@babel/helper-hoist-variables@7.18.6: + /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 - /@babel/helper-module-imports@7.21.4: + /@babel/helper-module-imports/7.21.4: resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 - /@babel/helper-module-transforms@7.22.1: + /@babel/helper-module-transforms/7.22.1: resolution: {integrity: sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==} engines: {node: '>=6.9.0'} dependencies: @@ -507,36 +393,36 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-plugin-utils@7.21.5: + /@babel/helper-plugin-utils/7.21.5: resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access@7.21.5: + /@babel/helper-simple-access/7.21.5: resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 - /@babel/helper-split-export-declaration@7.18.6: + /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.4 - /@babel/helper-string-parser@7.21.5: + /@babel/helper-string-parser/7.21.5: resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.19.1: + /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.21.0: + /@babel/helper-validator-option/7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.22.3: + /@babel/helpers/7.22.3: resolution: {integrity: sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==} engines: {node: '>=6.9.0'} dependencies: @@ -546,7 +432,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight@7.18.6: + /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -554,14 +440,14 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.4: + /@babel/parser/7.22.4: resolution: {integrity: sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.22.4 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.1): + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.22.1: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -570,7 +456,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.1): + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -579,7 +465,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.1): + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.22.1: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -588,7 +474,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.1): + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.22.1: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -597,7 +483,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.1): + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -606,7 +492,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.1): + /@babel/plugin-syntax-jsx/7.21.4_@babel+core@7.22.1: resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -616,7 +502,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.1): + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.22.1: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -625,7 +511,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.1): + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -634,7 +520,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.1): + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.22.1: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -643,7 +529,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.1): + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -652,7 +538,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.1): + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -661,7 +547,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.1): + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.22.1: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -670,7 +556,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.1): + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.22.1: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -680,7 +566,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.1): + /@babel/plugin-syntax-typescript/7.21.4_@babel+core@7.22.1: resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -690,7 +576,7 @@ packages: '@babel/helper-plugin-utils': 7.21.5 dev: true - /@babel/runtime-corejs3@7.20.1: + /@babel/runtime-corejs3/7.20.1: resolution: {integrity: sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==} engines: {node: '>=6.9.0'} dependencies: @@ -698,20 +584,20 @@ packages: regenerator-runtime: 0.13.11 dev: false - /@babel/runtime@7.20.1: + /@babel/runtime/7.20.1: resolution: {integrity: sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/runtime@7.22.3: + /@babel/runtime/7.22.3: resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template@7.21.9: + /@babel/template/7.21.9: resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} engines: {node: '>=6.9.0'} dependencies: @@ -719,7 +605,7 @@ packages: '@babel/parser': 7.22.4 '@babel/types': 7.22.4 - /@babel/traverse@7.22.4: + /@babel/traverse/7.22.4: resolution: {integrity: sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==} engines: {node: '>=6.9.0'} dependencies: @@ -736,7 +622,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.22.4: + /@babel/types/7.22.4: resolution: {integrity: sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==} engines: {node: '>=6.9.0'} dependencies: @@ -744,11 +630,11 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage@0.2.3: + /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bufbuild/buf-darwin-arm64@1.15.0: + /@bufbuild/buf-darwin-arm64/1.15.0: resolution: {integrity: sha512-sLN6uGc8sIBALa7Q4fB6rW9NM0MXK32pH6RRDUdl7aDrp/3A6TLKKBGiHcY81axUyxDTUNFb8dOwhHTI2H8FzQ==} engines: {node: '>=12'} cpu: [arm64] @@ -757,7 +643,7 @@ packages: dev: true optional: true - /@bufbuild/buf-darwin-x64@1.15.0: + /@bufbuild/buf-darwin-x64/1.15.0: resolution: {integrity: sha512-iHml29I/hOl7ORyp9ohiV7fC1WqPbM5UjogwVpA8j06o5SgxRhp42nd80XRAXCM+65ecwiu5JVuspicGzQFOgg==} engines: {node: '>=12'} cpu: [x64] @@ -766,7 +652,7 @@ packages: dev: true optional: true - /@bufbuild/buf-linux-aarch64@1.15.0: + /@bufbuild/buf-linux-aarch64/1.15.0: resolution: {integrity: sha512-YQHXqV1HhdpmIUrYg+gZNWCf43XHJJO5TlJT+pzXB/92PoN8gNP3KdxeRaM2sExcCs91G6zy1/Ms9N6DpeidUQ==} engines: {node: '>=12'} cpu: [arm64] @@ -775,7 +661,7 @@ packages: dev: true optional: true - /@bufbuild/buf-linux-x64@1.15.0: + /@bufbuild/buf-linux-x64/1.15.0: resolution: {integrity: sha512-DD2OcsfofawRPQKXLFMqV2GSzi4WyE7kKE1PvXBtJy7sombv5TM26vgdb+DQv4T4Z2i7vhKshnflNkfd3QXtXA==} engines: {node: '>=12'} cpu: [x64] @@ -784,7 +670,7 @@ packages: dev: true optional: true - /@bufbuild/buf-win32-arm64@1.15.0: + /@bufbuild/buf-win32-arm64/1.15.0: resolution: {integrity: sha512-wk65iDXWRicfrt/9Gb1voAn9eGP2giQfKMrKOoEyytnDHFolMSmQimKH6iQ1uS5Vn0gI/BVp582cF1m9YsbXEg==} engines: {node: '>=12'} cpu: [arm64] @@ -793,7 +679,7 @@ packages: dev: true optional: true - /@bufbuild/buf-win32-x64@1.15.0: + /@bufbuild/buf-win32-x64/1.15.0: resolution: {integrity: sha512-KVoMj52ghYfLwGjQ+t19XZiQy8jGSGUYIe/yVZz08rsm5msXHGYOt++Bk3wr48rcv8gts8jo2/h1Ebkj+F6emw==} engines: {node: '>=12'} cpu: [x64] @@ -802,7 +688,7 @@ packages: dev: true optional: true - /@bufbuild/buf@1.15.0: + /@bufbuild/buf/1.15.0: resolution: {integrity: sha512-HX6AjKiI8TVFJKWdDGIUC/zZQG/8sf5FbmU5VdbK/U8tbfCwBADkJ6I+qP6HnDDtSU4obS164J0sibdGhAJKqg==} engines: {node: '>=12'} hasBin: true @@ -816,7 +702,7 @@ packages: '@bufbuild/buf-win32-x64': 1.15.0 dev: true - /@changesets/apply-release-plan@6.1.2: + /@changesets/apply-release-plan/6.1.2: resolution: {integrity: sha512-H8TV9E/WtJsDfoDVbrDGPXmkZFSv7W2KLqp4xX4MKZXshb0hsQZUNowUa8pnus9qb/5OZrFFRVsUsDCVHNW/AQ==} dependencies: '@babel/runtime': 7.22.3 @@ -834,7 +720,7 @@ packages: semver: 5.7.1 dev: true - /@changesets/assemble-release-plan@5.2.2: + /@changesets/assemble-release-plan/5.2.2: resolution: {integrity: sha512-B1qxErQd85AeZgZFZw2bDKyOfdXHhG+X5S+W3Da2yCem8l/pRy4G/S7iOpEcMwg6lH8q2ZhgbZZwZ817D+aLuQ==} dependencies: '@babel/runtime': 7.22.3 @@ -845,13 +731,13 @@ packages: semver: 5.7.1 dev: true - /@changesets/changelog-git@0.1.13: + /@changesets/changelog-git/0.1.13: resolution: {integrity: sha512-zvJ50Q+EUALzeawAxax6nF2WIcSsC5PwbuLeWkckS8ulWnuPYx8Fn/Sjd3rF46OzeKA8t30loYYV6TIzp4DIdg==} dependencies: '@changesets/types': 5.2.0 dev: true - /@changesets/cli@2.25.2: + /@changesets/cli/2.25.2: resolution: {integrity: sha512-ACScBJXI3kRyMd2R8n8SzfttDHi4tmKSwVwXBazJOylQItSRSF4cGmej2E4FVf/eNfGy6THkL9GzAahU9ErZrA==} hasBin: true dependencies: @@ -890,7 +776,7 @@ packages: tty-table: 4.1.6 dev: true - /@changesets/config@2.2.0: + /@changesets/config/2.2.0: resolution: {integrity: sha512-GGaokp3nm5FEDk/Fv2PCRcQCOxGKKPRZ7prcMqxEr7VSsG75MnChQE8plaW1k6V8L2bJE+jZWiRm19LbnproOw==} dependencies: '@changesets/errors': 0.1.4 @@ -902,13 +788,13 @@ packages: micromatch: 4.0.5 dev: true - /@changesets/errors@0.1.4: + /@changesets/errors/0.1.4: resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} dependencies: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph@1.3.4: + /@changesets/get-dependents-graph/1.3.4: resolution: {integrity: sha512-+C4AOrrFY146ydrgKOo5vTZfj7vetNu1tWshOID+UjPUU9afYGDXI8yLnAeib1ffeBXV3TuGVcyphKpJ3cKe+A==} dependencies: '@changesets/types': 5.2.0 @@ -918,7 +804,7 @@ packages: semver: 5.7.1 dev: true - /@changesets/get-release-plan@3.0.15: + /@changesets/get-release-plan/3.0.15: resolution: {integrity: sha512-W1tFwxE178/en+zSj/Nqbc3mvz88mcdqUMJhRzN1jDYqN3QI4ifVaRF9mcWUU+KI0gyYEtYR65tour690PqTcA==} dependencies: '@babel/runtime': 7.22.3 @@ -930,11 +816,11 @@ packages: '@manypkg/get-packages': 1.1.3 dev: true - /@changesets/get-version-range-type@0.3.2: + /@changesets/get-version-range-type/0.3.2: resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} dev: true - /@changesets/git@1.5.0: + /@changesets/git/1.5.0: resolution: {integrity: sha512-Xo8AT2G7rQJSwV87c8PwMm6BAc98BnufRMsML7m7Iw8Or18WFvFmxqG5aOL5PBvhgq9KrKvaeIBNIymracSuHg==} dependencies: '@babel/runtime': 7.22.3 @@ -945,20 +831,20 @@ packages: spawndamnit: 2.0.0 dev: true - /@changesets/logger@0.0.5: + /@changesets/logger/0.0.5: resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} dependencies: chalk: 2.4.2 dev: true - /@changesets/parse@0.3.15: + /@changesets/parse/0.3.15: resolution: {integrity: sha512-3eDVqVuBtp63i+BxEWHPFj2P1s3syk0PTrk2d94W9JD30iG+OER0Y6n65TeLlY8T2yB9Fvj6Ev5Gg0+cKe/ZUA==} dependencies: '@changesets/types': 5.2.0 js-yaml: 3.14.1 dev: true - /@changesets/pre@1.0.13: + /@changesets/pre/1.0.13: resolution: {integrity: sha512-jrZc766+kGZHDukjKhpBXhBJjVQMied4Fu076y9guY1D3H622NOw8AQaLV3oQsDtKBTrT2AUFjt9Z2Y9Qx+GfA==} dependencies: '@babel/runtime': 7.22.3 @@ -968,7 +854,7 @@ packages: fs-extra: 7.0.1 dev: true - /@changesets/read@0.5.8: + /@changesets/read/0.5.8: resolution: {integrity: sha512-eYaNfxemgX7f7ELC58e7yqQICW5FB7V+bd1lKt7g57mxUrTveYME+JPaBPpYx02nP53XI6CQp6YxnR9NfmFPKw==} dependencies: '@babel/runtime': 7.22.3 @@ -981,15 +867,15 @@ packages: p-filter: 2.1.0 dev: true - /@changesets/types@4.1.0: + /@changesets/types/4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: true - /@changesets/types@5.2.0: + /@changesets/types/5.2.0: resolution: {integrity: sha512-km/66KOqJC+eicZXsm2oq8A8bVTSpkZJ60iPV/Nl5Z5c7p9kk8xxh6XGRTlnludHldxOOfudhnDN2qPxtHmXzA==} dev: true - /@changesets/write@0.2.2: + /@changesets/write/0.2.2: resolution: {integrity: sha512-kCYNHyF3xaId1Q/QE+DF3UTrHTyg3Cj/f++T8S8/EkC+jh1uK2LFnM9h+EzV+fsmnZDrs7r0J4LLpeI/VWC5Hg==} dependencies: '@babel/runtime': 7.22.3 @@ -999,13 +885,13 @@ packages: prettier: 2.8.0 dev: true - /@cspotcode/source-map-support@0.8.1: + /@cspotcode/source-map-support/0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - /@esbuild/linux-loong64@0.14.54: + /@esbuild/linux-loong64/0.14.54: resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} engines: {node: '>=12'} cpu: [loong64] @@ -1014,7 +900,7 @@ packages: dev: true optional: true - /@eslint/eslintrc@0.4.3: + /@eslint/eslintrc/0.4.3: resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -1029,8 +915,26 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: true - /@grpc/grpc-js@1.8.13: + /@eslint/eslintrc/1.3.3: + resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.1 + globals: 13.18.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@grpc/grpc-js/1.8.13: resolution: {integrity: sha512-iY3jsdfbc0ARoCLFvbvUB8optgyb0r1XLPb142u+QtgBcKJYkCIFt3Fd/881KqjLYWjsBJF57N3b8Eop9NDfUA==} engines: {node: ^8.13.0 || >=10.10.0} dependencies: @@ -1038,7 +942,7 @@ packages: '@types/node': 18.11.9 dev: false - /@grpc/proto-loader@0.7.6: + /@grpc/proto-loader/0.7.6: resolution: {integrity: sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw==} engines: {node: '>=6'} hasBin: true @@ -1050,7 +954,7 @@ packages: yargs: 16.2.0 dev: false - /@headlessui/react@1.7.14(react-dom@18.2.0)(react@18.2.0): + /@headlessui/react/1.7.14_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-znzdq9PG8rkwcu9oQ2FwIy0ZFtP9Z7ycS+BAqJ3R5EIqC/0bJGvhT7193rFf+45i9nnPsYvCQVW4V/bB9Xc+gA==} engines: {node: '>=10'} peerDependencies: @@ -1059,10 +963,10 @@ packages: dependencies: client-only: 0.0.1 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react-dom: 18.2.0_react@18.2.0 dev: false - /@heroicons/react@2.0.13(react@18.2.0): + /@heroicons/react/2.0.13_react@18.2.0: resolution: {integrity: sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==} peerDependencies: react: '>= 16' @@ -1070,7 +974,18 @@ packages: react: 18.2.0 dev: false - /@humanwhocodes/config-array@0.5.0: + /@humanwhocodes/config-array/0.11.7: + resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@humanwhocodes/config-array/0.5.0: resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} engines: {node: '>=10.10.0'} dependencies: @@ -1079,11 +994,17 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: true - /@humanwhocodes/object-schema@1.2.1: + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: false + + /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - /@istanbuljs/load-nyc-config@1.1.0: + /@istanbuljs/load-nyc-config/1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -1094,12 +1015,12 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema@0.1.3: + /@istanbuljs/schema/0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console@29.5.0: + /@jest/console/29.5.0: resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1111,7 +1032,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core@29.5.0(ts-node@10.9.1): + /@jest/core/29.5.0_ts-node@10.9.1: resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1132,7 +1053,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) + jest-config: 29.5.0_odkjkoia5xunhxkdrka32ib6vi jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -1153,7 +1074,7 @@ packages: - ts-node dev: true - /@jest/environment@29.5.0: + /@jest/environment/29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1163,14 +1084,14 @@ packages: jest-mock: 29.5.0 dev: true - /@jest/expect-utils@29.5.0: + /@jest/expect-utils/29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 dev: true - /@jest/expect@29.5.0: + /@jest/expect/29.5.0: resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1180,7 +1101,7 @@ packages: - supports-color dev: true - /@jest/fake-timers@29.5.0: + /@jest/fake-timers/29.5.0: resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1192,7 +1113,7 @@ packages: jest-util: 29.5.0 dev: true - /@jest/globals@29.5.0: + /@jest/globals/29.5.0: resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1204,7 +1125,7 @@ packages: - supports-color dev: true - /@jest/reporters@29.5.0: + /@jest/reporters/29.5.0: resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1241,14 +1162,14 @@ packages: - supports-color dev: true - /@jest/schemas@29.4.3: + /@jest/schemas/29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.24 dev: true - /@jest/source-map@29.4.3: + /@jest/source-map/29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1257,7 +1178,7 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result@29.5.0: + /@jest/test-result/29.5.0: resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1267,7 +1188,7 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer@29.5.0: + /@jest/test-sequencer/29.5.0: resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1277,7 +1198,7 @@ packages: slash: 3.0.0 dev: true - /@jest/transform@29.5.0: + /@jest/transform/29.5.0: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1300,7 +1221,7 @@ packages: - supports-color dev: true - /@jest/types@29.5.0: + /@jest/types/29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1312,7 +1233,7 @@ packages: chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping@0.3.3: + /@jridgewell/gen-mapping/0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: @@ -1320,33 +1241,37 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.18 - /@jridgewell/resolve-uri@3.1.0: + /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: + /@jridgewell/resolve-uri/3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec@1.4.14: + /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/sourcemap-codec@1.4.15: + /@jridgewell/sourcemap-codec/1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.18: + /@jridgewell/trace-mapping/0.3.18: resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping@0.3.9: + /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - /@manypkg/find-root@1.1.0: + /@manypkg/find-root/1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: '@babel/runtime': 7.22.3 @@ -1355,7 +1280,7 @@ packages: fs-extra: 8.1.0 dev: true - /@manypkg/get-packages@1.1.3: + /@manypkg/get-packages/1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: '@babel/runtime': 7.22.3 @@ -1366,14 +1291,14 @@ packages: read-yaml-file: 1.1.0 dev: true - /@mapbox/node-pre-gyp@1.0.10: + /@mapbox/node-pre-gyp/1.0.10: resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} hasBin: true dependencies: detect-libc: 2.0.1 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.6.11 + node-fetch: 2.6.9 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 @@ -1384,21 +1309,21 @@ packages: - supports-color dev: true - /@next/env@13.2.3: + /@next/env/13.2.3: resolution: {integrity: sha512-FN50r/E+b8wuqyRjmGaqvqNDuWBWYWQiigfZ50KnSFH0f+AMQQyaZl+Zm2+CIpKk0fL9QxhLxOpTVA3xFHgFow==} dev: false - /@next/env@13.4.2: + /@next/env/13.4.2: resolution: {integrity: sha512-Wqvo7lDeS0KGwtwg9TT9wKQ8raelmUxt+TQKWvG/xKfcmDXNOtCuaszcfCF8JzlBG1q0VhpI6CKaRMbVPMDWgw==} dev: false - /@next/eslint-plugin-next@13.4.0: - resolution: {integrity: sha512-ZqQi1slguDavpuNUcl9va8+WtHHpgymIW2g+4Gs9FdI+5rjAvrUqqjfCec2hi3Cjbbp7zULFQuAiPwASKHbrxw==} + /@next/eslint-plugin-next/13.4.5: + resolution: {integrity: sha512-/xD/kyJhXmBZq+0xGKOdjL22c9/4i3mBAXaU9aOGEHTXqqFeOz8scJbScWF13aMqigeoFCsDqngIB2MIatcn4g==} dependencies: glob: 7.1.7 dev: false - /@next/swc-android-arm-eabi@13.2.3: + /@next/swc-android-arm-eabi/13.2.3: resolution: {integrity: sha512-mykdVaAXX/gm+eFO2kPeVjnOCKwanJ9mV2U0lsUGLrEdMUifPUjiXKc6qFAIs08PvmTMOLMNnUxqhGsJlWGKSw==} engines: {node: '>= 10'} cpu: [arm] @@ -1407,7 +1332,7 @@ packages: dev: false optional: true - /@next/swc-android-arm64@13.2.3: + /@next/swc-android-arm64/13.2.3: resolution: {integrity: sha512-8XwHPpA12gdIFtope+n9xCtJZM3U4gH4vVTpUwJ2w1kfxFmCpwQ4xmeGSkR67uOg80yRMuF0h9V1ueo05sws5w==} engines: {node: '>= 10'} cpu: [arm64] @@ -1416,7 +1341,7 @@ packages: dev: false optional: true - /@next/swc-darwin-arm64@13.2.3: + /@next/swc-darwin-arm64/13.2.3: resolution: {integrity: sha512-TXOubiFdLpMfMtaRu1K5d1I9ipKbW5iS2BNbu8zJhoqrhk3Kp7aRKTxqFfWrbliAHhWVE/3fQZUYZOWSXVQi1w==} engines: {node: '>= 10'} cpu: [arm64] @@ -1425,7 +1350,7 @@ packages: dev: false optional: true - /@next/swc-darwin-arm64@13.4.2: + /@next/swc-darwin-arm64/13.4.2: resolution: {integrity: sha512-6BBlqGu3ewgJflv9iLCwO1v1hqlecaIH2AotpKfVUEzUxuuDNJQZ2a4KLb4MBl8T9/vca1YuWhSqtbF6ZuUJJw==} engines: {node: '>= 10'} cpu: [arm64] @@ -1434,7 +1359,7 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.2.3: + /@next/swc-darwin-x64/13.2.3: resolution: {integrity: sha512-GZctkN6bJbpjlFiS5pylgB2pifHvgkqLAPumJzxnxkf7kqNm6rOGuNjsROvOWVWXmKhrzQkREO/WPS2aWsr/yw==} engines: {node: '>= 10'} cpu: [x64] @@ -1443,7 +1368,7 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@13.4.2: + /@next/swc-darwin-x64/13.4.2: resolution: {integrity: sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg==} engines: {node: '>= 10'} cpu: [x64] @@ -1452,7 +1377,7 @@ packages: dev: false optional: true - /@next/swc-freebsd-x64@13.2.3: + /@next/swc-freebsd-x64/13.2.3: resolution: {integrity: sha512-rK6GpmMt/mU6MPuav0/M7hJ/3t8HbKPCELw/Uqhi4732xoq2hJ2zbo2FkYs56y6w0KiXrIp4IOwNB9K8L/q62g==} engines: {node: '>= 10'} cpu: [x64] @@ -1461,7 +1386,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm-gnueabihf@13.2.3: + /@next/swc-linux-arm-gnueabihf/13.2.3: resolution: {integrity: sha512-yeiCp/Odt1UJ4KUE89XkeaaboIDiVFqKP4esvoLKGJ0fcqJXMofj4ad3tuQxAMs3F+qqrz9MclqhAHkex1aPZA==} engines: {node: '>= 10'} cpu: [arm] @@ -1470,7 +1395,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.2.3: + /@next/swc-linux-arm64-gnu/13.2.3: resolution: {integrity: sha512-/miIopDOUsuNlvjBjTipvoyjjaxgkOuvlz+cIbbPcm1eFvzX2ltSfgMgty15GuOiR8Hub4FeTSiq3g2dmCkzGA==} engines: {node: '>= 10'} cpu: [arm64] @@ -1479,7 +1404,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@13.4.2: + /@next/swc-linux-arm64-gnu/13.4.2: resolution: {integrity: sha512-2xVabFtIge6BJTcJrW8YuUnYTuQjh4jEuRuS2mscyNVOj6zUZkom3CQg+egKOoS+zh2rrro66ffSKIS+ztFJTg==} engines: {node: '>= 10'} cpu: [arm64] @@ -1488,7 +1413,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.2.3: + /@next/swc-linux-arm64-musl/13.2.3: resolution: {integrity: sha512-sujxFDhMMDjqhruup8LLGV/y+nCPi6nm5DlFoThMJFvaaKr/imhkXuk8uCTq4YJDbtRxnjydFv2y8laBSJVC2g==} engines: {node: '>= 10'} cpu: [arm64] @@ -1497,7 +1422,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@13.4.2: + /@next/swc-linux-arm64-musl/13.4.2: resolution: {integrity: sha512-wKRCQ27xCUJx5d6IivfjYGq8oVngqIhlhSAJntgXLt7Uo9sRT/3EppMHqUZRfyuNBTbykEre1s5166z+pvRB5A==} engines: {node: '>= 10'} cpu: [arm64] @@ -1506,7 +1431,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.2.3: + /@next/swc-linux-x64-gnu/13.2.3: resolution: {integrity: sha512-w5MyxPknVvC9LVnMenAYMXMx4KxPwXuJRMQFvY71uXg68n7cvcas85U5zkdrbmuZ+JvsO5SIG8k36/6X3nUhmQ==} engines: {node: '>= 10'} cpu: [x64] @@ -1515,7 +1440,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@13.4.2: + /@next/swc-linux-x64-gnu/13.4.2: resolution: {integrity: sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA==} engines: {node: '>= 10'} cpu: [x64] @@ -1524,7 +1449,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.2.3: + /@next/swc-linux-x64-musl/13.2.3: resolution: {integrity: sha512-CTeelh8OzSOVqpzMFMFnVRJIFAFQoTsI9RmVJWW/92S4xfECGcOzgsX37CZ8K982WHRzKU7exeh7vYdG/Eh4CA==} engines: {node: '>= 10'} cpu: [x64] @@ -1533,7 +1458,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@13.4.2: + /@next/swc-linux-x64-musl/13.4.2: resolution: {integrity: sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ==} engines: {node: '>= 10'} cpu: [x64] @@ -1542,7 +1467,7 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.2.3: + /@next/swc-win32-arm64-msvc/13.2.3: resolution: {integrity: sha512-7N1KBQP5mo4xf52cFCHgMjzbc9jizIlkTepe9tMa2WFvEIlKDfdt38QYcr9mbtny17yuaIw02FXOVEytGzqdOQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -1551,7 +1476,7 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@13.4.2: + /@next/swc-win32-arm64-msvc/13.4.2: resolution: {integrity: sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -1560,7 +1485,7 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.2.3: + /@next/swc-win32-ia32-msvc/13.2.3: resolution: {integrity: sha512-LzWD5pTSipUXTEMRjtxES/NBYktuZdo7xExJqGDMnZU8WOI+v9mQzsmQgZS/q02eIv78JOCSemqVVKZBGCgUvA==} engines: {node: '>= 10'} cpu: [ia32] @@ -1569,7 +1494,7 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@13.4.2: + /@next/swc-win32-ia32-msvc/13.4.2: resolution: {integrity: sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw==} engines: {node: '>= 10'} cpu: [ia32] @@ -1578,7 +1503,7 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.2.3: + /@next/swc-win32-x64-msvc/13.2.3: resolution: {integrity: sha512-aLG2MaFs4y7IwaMTosz2r4mVbqRyCnMoFqOcmfTi7/mAS+G4IMH0vJp4oLdbshqiVoiVuKrAfqtXj55/m7Qu1Q==} engines: {node: '>= 10'} cpu: [x64] @@ -1587,7 +1512,7 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@13.4.2: + /@next/swc-win32-x64-msvc/13.4.2: resolution: {integrity: sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw==} engines: {node: '>= 10'} cpu: [x64] @@ -1596,25 +1521,25 @@ packages: dev: false optional: true - /@nodelib/fs.scandir@2.1.5: + /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: + /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk@1.2.8: + /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - /@pkgr/utils@2.3.1: + /@pkgr/utils/2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: @@ -1626,80 +1551,80 @@ packages: tslib: 2.4.1 dev: false - /@protobufjs/aspromise@1.1.2: + /@protobufjs/aspromise/1.1.2: resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - /@protobufjs/base64@1.1.2: + /@protobufjs/base64/1.1.2: resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - /@protobufjs/codegen@2.0.4: + /@protobufjs/codegen/2.0.4: resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - /@protobufjs/eventemitter@1.1.0: + /@protobufjs/eventemitter/1.1.0: resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - /@protobufjs/fetch@1.1.0: + /@protobufjs/fetch/1.1.0: resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} dependencies: '@protobufjs/aspromise': 1.1.2 '@protobufjs/inquire': 1.1.0 - /@protobufjs/float@1.0.2: + /@protobufjs/float/1.0.2: resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - /@protobufjs/inquire@1.1.0: + /@protobufjs/inquire/1.1.0: resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - /@protobufjs/path@1.1.2: + /@protobufjs/path/1.1.2: resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - /@protobufjs/pool@1.1.0: + /@protobufjs/pool/1.1.0: resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - /@protobufjs/utf8@1.1.0: + /@protobufjs/utf8/1.1.0: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - /@rushstack/eslint-patch@1.2.0: + /@rushstack/eslint-patch/1.2.0: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: false - /@sinclair/typebox@0.25.24: + /@sinclair/typebox/0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sinonjs/commons@3.0.0: + /@sinonjs/commons/3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers@10.2.0: + /@sinonjs/fake-timers/10.2.0: resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} dependencies: '@sinonjs/commons': 3.0.0 dev: true - /@swc/helpers@0.4.14: + /@swc/helpers/0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: tslib: 2.4.1 dev: false - /@swc/helpers@0.5.1: + /@swc/helpers/0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.4.1 dev: false - /@tailwindcss/forms@0.5.3(tailwindcss@3.2.4): + /@tailwindcss/forms/0.5.3_tailwindcss@3.2.4: resolution: {integrity: sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==} peerDependencies: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.2.4(postcss@8.4.21)(ts-node@10.9.1) + tailwindcss: 3.2.4_aesdjsunmf4wiehhujt67my7tu - /@testing-library/dom@9.3.0: + /@testing-library/dom/9.3.0: resolution: {integrity: sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==} engines: {node: '>=14'} dependencies: @@ -1713,7 +1638,7 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@5.16.5: + /@testing-library/jest-dom/5.16.5: resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: @@ -1728,7 +1653,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react@14.0.0(react-dom@18.2.0)(react@18.2.0): + /@testing-library/react/14.0.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==} engines: {node: '>=14'} peerDependencies: @@ -1739,95 +1664,95 @@ packages: '@testing-library/dom': 9.3.0 '@types/react-dom': 18.0.9 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react-dom: 18.2.0_react@18.2.0 dev: true - /@tootallnate/once@2.0.0: + /@tootallnate/once/2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@tsconfig/node10@1.0.9: + /@tsconfig/node10/1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - /@tsconfig/node12@1.0.11: + /@tsconfig/node12/1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - /@tsconfig/node14@1.0.3: + /@tsconfig/node14/1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - /@tsconfig/node16@1.0.4: + /@tsconfig/node16/1.0.4: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - /@types/aria-query@5.0.1: + /@types/aria-query/5.0.1: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true - /@types/babel__core@7.20.0: - resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} + /@types/babel__core/7.20.1: + resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: '@babel/parser': 7.22.4 '@babel/types': 7.22.4 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.5 + '@types/babel__traverse': 7.20.1 dev: true - /@types/babel__generator@7.6.4: + /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.22.4 dev: true - /@types/babel__template@7.4.1: + /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.22.4 '@babel/types': 7.22.4 dev: true - /@types/babel__traverse@7.18.5: - resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} + /@types/babel__traverse/7.20.1: + resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} dependencies: '@babel/types': 7.22.4 dev: true - /@types/graceful-fs@4.1.6: + /@types/graceful-fs/4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: '@types/node': 18.11.9 dev: true - /@types/is-ci@3.0.0: + /@types/is-ci/3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: ci-info: 3.6.2 dev: true - /@types/istanbul-lib-coverage@2.0.4: + /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report@3.0.0: + /@types/istanbul-lib-report/3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports@3.0.1: + /@types/istanbul-reports/3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest@29.5.1: - resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} + /@types/jest/29.5.2: + resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 dev: true - /@types/jsdom@20.0.1: + /@types/jsdom/20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: '@types/node': 18.11.9 @@ -1835,57 +1760,57 @@ packages: parse5: 7.1.2 dev: true - /@types/json5@0.0.29: + /@types/json5/0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false - /@types/long@4.0.2: + /@types/long/4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} - /@types/minimist@1.2.2: + /@types/minimist/1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/ms@0.7.31: + /@types/ms/0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true - /@types/node@12.20.55: + /@types/node/12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.11.9: + /@types/node/18.11.9: resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} - /@types/normalize-package-data@2.4.1: + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/object-hash@1.3.4: + /@types/object-hash/1.3.4: resolution: {integrity: sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==} dev: true - /@types/prettier@2.7.2: - resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} + /@types/prettier/2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} dev: true - /@types/prop-types@15.7.5: + /@types/prop-types/15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react-dom@17.0.18: + /@types/react-dom/17.0.18: resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==} dependencies: '@types/react': 17.0.52 dev: true - /@types/react-dom@18.0.9: + /@types/react-dom/18.0.9: resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} dependencies: - '@types/react': 17.0.52 + '@types/react': 18.2.8 dev: true - /@types/react@17.0.52: + /@types/react/17.0.52: resolution: {integrity: sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==} dependencies: '@types/prop-types': 15.7.5 @@ -1893,7 +1818,7 @@ packages: csstype: 3.1.1 dev: true - /@types/react@18.2.8: + /@types/react/18.2.8: resolution: {integrity: sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==} dependencies: '@types/prop-types': 15.7.5 @@ -1901,47 +1826,47 @@ packages: csstype: 3.1.1 dev: true - /@types/scheduler@0.16.2: + /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: true - /@types/semver@6.2.3: + /@types/semver/6.2.3: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true - /@types/stack-utils@2.0.1: + /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/testing-library__jest-dom@5.14.6: + /@types/testing-library__jest-dom/5.14.6: resolution: {integrity: sha512-FkHXCb+ikSoUP4Y4rOslzTdX5sqYwMxfefKh1GmZ8ce1GOkEHntSp6b5cGadmNfp5e4BMEWOMx+WSKd5/MqlDA==} dependencies: - '@types/jest': 29.5.1 + '@types/jest': 29.5.2 dev: true - /@types/tinycolor2@1.4.3: + /@types/tinycolor2/1.4.3: resolution: {integrity: sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==} dev: true - /@types/tough-cookie@4.0.2: + /@types/tough-cookie/4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/uuid@9.0.1: + /@types/uuid/9.0.1: resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} dev: true - /@types/yargs-parser@21.0.0: + /@types/yargs-parser/21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs@17.0.24: + /@types/yargs/17.0.24: resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/parser@5.44.0(eslint@7.32.0)(typescript@4.9.3): + /@typescript-eslint/parser/5.44.0_dewl7jrzrufmm6i6j6pp2pqhja: resolution: {integrity: sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1953,15 +1878,15 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.44.0 '@typescript-eslint/types': 5.44.0 - '@typescript-eslint/typescript-estree': 5.44.0(typescript@4.9.3) + '@typescript-eslint/typescript-estree': 5.44.0_typescript@5.0.4 debug: 4.3.4 - eslint: 7.32.0 - typescript: 4.9.3 + eslint: 8.28.0 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/scope-manager@5.44.0: + /@typescript-eslint/scope-manager/5.44.0: resolution: {integrity: sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -1969,12 +1894,12 @@ packages: '@typescript-eslint/visitor-keys': 5.44.0 dev: false - /@typescript-eslint/types@5.44.0: + /@typescript-eslint/types/5.44.0: resolution: {integrity: sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree@5.44.0(typescript@4.9.3): + /@typescript-eslint/typescript-estree/5.44.0_typescript@5.0.4: resolution: {integrity: sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1989,13 +1914,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0(typescript@4.9.3) - typescript: 4.9.3 + tsutils: 3.21.0_typescript@5.0.4 + typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/visitor-keys@5.44.0: + /@typescript-eslint/visitor-keys/5.44.0: resolution: {integrity: sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -2003,7 +1928,7 @@ packages: eslint-visitor-keys: 3.3.0 dev: false - /@vercel/analytics@1.0.0(react@18.2.0): + /@vercel/analytics/1.0.0_react@18.2.0: resolution: {integrity: sha512-RQmj7pv82JwGDHrnKeRc6TtSw2U7rWNubc2IH0ernTzWTj02yr9zvIYiYJeztsBzrJtWv7m8Nz6vxxb+cdEtJw==} peerDependencies: react: ^16.8||^17||^18 @@ -2011,63 +1936,78 @@ packages: react: 18.2.0 dev: false - /@vercel/git-hooks@1.0.0: + /@vercel/git-hooks/1.0.0: resolution: {integrity: sha512-OxDFAAdyiJ/H0b8zR9rFCu3BIb78LekBXOphOYG3snV4ULhKFX387pBPpqZ9HLiRTejBWBxYEahkw79tuIgdAA==} requiresBuild: true dev: true - /abab@2.0.6: + /abab/2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /abbrev@1.1.1: + /abbrev/1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true - /abort-controller-x@0.4.1: + /abort-controller-x/0.4.1: resolution: {integrity: sha512-lJ2ssrl3FoTK3cX/g15lRCkXFWKiwRTRtBjfwounO2EM/Q65rI/MEZsfsch1juWU2pH2aLSaq0HGowlDP/imrw==} dev: false - /acorn-globals@7.0.1: + /acorn-globals/7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.2 + acorn: 8.8.1 acorn-walk: 8.2.0 dev: true - /acorn-jsx@5.3.2(acorn@7.4.1): + /acorn-jsx/5.3.2_acorn@7.4.1: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 7.4.1 + dev: true - /acorn-node@1.8.2: + /acorn-jsx/5.3.2_acorn@8.8.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: false + + /acorn-node/1.8.2: resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} dependencies: acorn: 7.4.1 acorn-walk: 7.2.0 xtend: 4.0.2 - /acorn-walk@7.2.0: + /acorn-walk/7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} - /acorn-walk@8.2.0: + /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - /acorn@7.4.1: + /acorn/7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true - /agent-base@6.0.2: + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -2076,7 +2016,7 @@ packages: - supports-color dev: true - /aggregate-error@3.1.0: + /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} dependencies: @@ -2084,7 +2024,7 @@ packages: indent-string: 4.0.0 dev: true - /aggregate-error@4.0.1: + /aggregate-error/4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} dependencies: @@ -2092,7 +2032,7 @@ packages: indent-string: 5.0.0 dev: true - /ajv@6.12.6: + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -2100,72 +2040,74 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + /ajv/8.11.2: + resolution: {integrity: sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: true - /ansi-colors@4.1.3: + /ansi-colors/4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + dev: true - /ansi-escapes@4.3.2: + /ansi-escapes/4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-regex@5.0.1: + /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex@6.0.1: + /ansi-regex/6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} dev: true - /ansi-styles@3.2.1: + /ansi-styles/3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: + /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: + /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /ansi-styles@6.2.1: + /ansi-styles/6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true - /any-promise@1.3.0: + /any-promise/1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true - /anymatch@3.1.3: + /anymatch/3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /aproba@2.0.0: + /aproba/2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} dev: true - /are-we-there-yet@2.0.0: + /are-we-there-yet/2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} dependencies: @@ -2173,18 +2115,23 @@ packages: readable-stream: 3.6.2 dev: true - /arg@4.1.3: + /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - /arg@5.0.2: + /arg/5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - /argparse@1.0.10: + /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: true - /aria-query@4.2.2: + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false + + /aria-query/4.2.2: resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} engines: {node: '>=6.0'} dependencies: @@ -2192,20 +2139,20 @@ packages: '@babel/runtime-corejs3': 7.20.1 dev: false - /aria-query@5.1.3: + /aria-query/5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.1 dev: true - /array-buffer-byte-length@1.0.0: + /array-buffer-byte-length/1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.2 is-array-buffer: 3.0.2 dev: true - /array-includes@3.1.6: + /array-includes/3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: @@ -2216,11 +2163,11 @@ packages: is-string: 1.0.7 dev: false - /array-union@2.1.0: + /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /array.prototype.flat@1.3.1: + /array.prototype.flat/1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: @@ -2229,7 +2176,7 @@ packages: es-abstract: 1.20.4 es-shim-unscopables: 1.0.0 - /array.prototype.flatmap@1.3.1: + /array.prototype.flatmap/1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: @@ -2239,7 +2186,7 @@ packages: es-shim-unscopables: 1.0.0 dev: false - /array.prototype.tosorted@1.1.1: + /array.prototype.tosorted/1.1.1: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 @@ -2249,24 +2196,25 @@ packages: get-intrinsic: 1.2.1 dev: false - /arrify@1.0.1: + /arrify/1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /ast-types-flow@0.0.7: + /ast-types-flow/0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: false - /astral-regex@2.0.0: + /astral-regex/2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} + dev: true - /asynckit@0.4.0: + /asynckit/0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /autoprefixer@10.4.13(postcss@8.4.21): + /autoprefixer/10.4.13_postcss@8.4.21: resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -2282,21 +2230,21 @@ packages: postcss-value-parser: 4.2.0 dev: true - /available-typed-arrays@1.0.5: + /available-typed-arrays/1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /axe-core@4.5.2: + /axe-core/4.5.2: resolution: {integrity: sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA==} engines: {node: '>=4'} dev: false - /axobject-query@2.2.0: + /axobject-query/2.2.0: resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} dev: false - /babel-jest@29.5.0(@babel/core@7.22.1): + /babel-jest/29.5.0_@babel+core@7.22.1: resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2304,9 +2252,9 @@ packages: dependencies: '@babel/core': 7.22.1 '@jest/transform': 29.5.0 - '@types/babel__core': 7.20.0 + '@types/babel__core': 7.20.1 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.1) + babel-preset-jest: 29.5.0_@babel+core@7.22.1 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -2314,7 +2262,7 @@ packages: - supports-color dev: true - /babel-plugin-istanbul@6.1.1: + /babel-plugin-istanbul/6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -2327,37 +2275,37 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist@29.5.0: + /babel-plugin-jest-hoist/29.5.0: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.21.9 '@babel/types': 7.22.4 - '@types/babel__core': 7.20.0 - '@types/babel__traverse': 7.18.5 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.1): + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.22.1: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.1 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.1) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.1) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.1) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.1) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.1) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.1) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.1) + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.1 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.22.1 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.22.1 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.22.1 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.1 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.1 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.1 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.1 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.1 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.1 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.22.1 dev: true - /babel-preset-jest@29.5.0(@babel/core@7.22.1): + /babel-preset-jest/29.5.0_@babel+core@7.22.1: resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2365,42 +2313,42 @@ packages: dependencies: '@babel/core': 7.22.1 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1) + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.22.1 dev: true - /balanced-match@1.0.2: + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /better-path-resolve@1.0.0: + /better-path-resolve/1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} dependencies: is-windows: 1.0.2 dev: true - /binary-extensions@2.2.0: + /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /brace-expansion@1.1.11: + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /braces@3.0.2: + /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - /breakword@1.0.5: + /breakword/1.0.5: resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} dependencies: wcwidth: 1.0.1 dev: true - /browserslist@4.21.5: + /browserslist/4.21.5: resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2408,26 +2356,26 @@ packages: caniuse-lite: 1.0.30001473 electron-to-chromium: 1.4.348 node-releases: 2.0.10 - update-browserslist-db: 1.0.10(browserslist@4.21.5) + update-browserslist-db: 1.0.10_browserslist@4.21.5 - /bs-logger@0.2.6: + /bs-logger/0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 dev: true - /bser@2.1.1: + /bser/2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-from@1.1.2: + /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /bundle-require@3.1.2(esbuild@0.14.54): + /bundle-require/3.1.2_esbuild@0.14.54: resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: @@ -2437,33 +2385,33 @@ packages: load-tsconfig: 0.2.3 dev: true - /busboy@1.6.0: + /busboy/1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 dev: false - /cac@6.7.14: + /cac/6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} dev: true - /call-bind@1.0.2: + /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.1 - /callsites@3.1.0: + /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /camelcase-css@2.0.1: + /camelcase-css/2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - /camelcase-keys@6.2.2: + /camelcase-keys/6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -2472,7 +2420,7 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase-keys@7.0.2: + /camelcase-keys/7.0.2: resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} engines: {node: '>=12'} dependencies: @@ -2482,29 +2430,29 @@ packages: type-fest: 1.4.0 dev: true - /camelcase@5.3.1: + /camelcase/5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /camelcase@6.3.0: + /camelcase/6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001434: + /caniuse-lite/1.0.30001434: resolution: {integrity: sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==} dev: false - /caniuse-lite@1.0.30001473: + /caniuse-lite/1.0.30001473: resolution: {integrity: sha512-ewDad7+D2vlyy+E4UJuVfiBsU69IL+8oVmTuZnH5Q6CIUbxNfI50uVpRHbUPDD6SUaN2o0Lh4DhTrvLG/Tn1yg==} - /case-anything@2.1.10: + /case-anything/2.1.10: resolution: {integrity: sha512-JczJwVrCP0jPKh05McyVsuOg6AYosrB9XWZKbQzXeDAm2ClE/PJE/BcrrQrVyGYH7Jg8V/LDupmyL4kFlVsVFQ==} engines: {node: '>=12.13'} dev: true - /chalk@2.4.2: + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -2512,7 +2460,7 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@3.0.0: + /chalk/3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: @@ -2520,23 +2468,23 @@ packages: supports-color: 7.2.0 dev: true - /chalk@4.1.2: + /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /char-regex@1.0.2: + /char-regex/1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /chardet@0.7.0: + /chardet/0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /chokidar@3.5.3: + /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -2550,40 +2498,40 @@ packages: optionalDependencies: fsevents: 2.3.2 - /chownr@2.0.0: + /chownr/2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} dev: true - /ci-info@3.6.2: + /ci-info/3.6.2: resolution: {integrity: sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg==} engines: {node: '>=8'} dev: true - /cjs-module-lexer@1.2.2: + /cjs-module-lexer/1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true - /clean-stack@2.2.0: + /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} dev: true - /clean-stack@4.2.0: + /clean-stack/4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} dependencies: escape-string-regexp: 5.0.0 dev: true - /cli-cursor@3.1.0: + /cli-cursor/3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 dev: true - /cli-truncate@2.1.0: + /cli-truncate/2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} dependencies: @@ -2591,7 +2539,7 @@ packages: string-width: 4.2.3 dev: true - /cli-truncate@3.1.0: + /cli-truncate/3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -2599,11 +2547,11 @@ packages: string-width: 5.1.2 dev: true - /client-only@0.0.1: + /client-only/0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false - /cliui@6.0.0: + /cliui/6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 @@ -2611,7 +2559,7 @@ packages: wrap-ansi: 6.2.0 dev: true - /cliui@7.0.4: + /cliui/7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -2619,7 +2567,7 @@ packages: wrap-ansi: 7.0.0 dev: false - /cliui@8.0.1: + /cliui/8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -2628,91 +2576,91 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone@1.0.4: + /clone/1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /clsx@1.2.1: + /clsx/1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} dev: false - /co@4.6.0: + /co/4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /collect-v8-coverage@1.0.1: + /collect-v8-coverage/1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /color-convert@1.9.3: + /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - /color-convert@2.0.1: + /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name@1.1.3: + /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name@1.1.4: + /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-support@1.1.3: + /color-support/1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true dev: true - /colorette@2.0.19: + /colorette/2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true - /combined-stream@1.0.8: + /combined-stream/1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /commander@4.1.1: + /commander/4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} dev: true - /commander@9.5.0: + /commander/9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} dev: true - /concat-map@0.0.1: + /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /console-control-strings@1.1.0: + /console-control-strings/1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: true - /convert-source-map@1.9.0: + /convert-source-map/1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /convert-source-map@2.0.0: + /convert-source-map/2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /core-js-pure@3.26.1: + /core-js-pure/3.26.1: resolution: {integrity: sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==} requiresBuild: true dev: false - /create-require@1.1.1: + /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - /cross-spawn@5.1.0: + /cross-spawn/5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 @@ -2720,7 +2668,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn@7.0.3: + /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -2728,47 +2676,47 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /css.escape@1.5.1: + /css.escape/1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: true - /cssesc@3.0.0: + /cssesc/3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - /cssom@0.3.8: + /cssom/0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom@0.5.0: + /cssom/0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true - /cssstyle@2.3.0: + /cssstyle/2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: true - /csstype@3.1.1: + /csstype/3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} dev: true - /csv-generate@3.4.3: + /csv-generate/3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true - /csv-parse@4.16.3: + /csv-parse/4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} dev: true - /csv-stringify@5.6.5: + /csv-stringify/5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} dev: true - /csv@5.5.3: + /csv/5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} dependencies: @@ -2778,11 +2726,11 @@ packages: stream-transform: 2.1.3 dev: true - /damerau-levenshtein@1.0.8: + /damerau-levenshtein/1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: false - /data-urls@3.0.2: + /data-urls/3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -2791,16 +2739,16 @@ packages: whatwg-url: 11.0.0 dev: true - /dataloader@1.4.0: + /dataloader/1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true - /date-fns@2.29.3: + /date-fns/2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} dev: false - /debug@2.6.9: + /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -2811,7 +2759,7 @@ packages: ms: 2.0.0 dev: false - /debug@3.2.7: + /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -2822,7 +2770,7 @@ packages: ms: 2.1.3 dev: false - /debug@4.3.4: + /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -2833,7 +2781,7 @@ packages: dependencies: ms: 2.1.2 - /decamelize-keys@1.1.1: + /decamelize-keys/1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: @@ -2841,25 +2789,25 @@ packages: map-obj: 1.0.1 dev: true - /decamelize@1.2.0: + /decamelize/1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /decamelize@5.0.1: + /decamelize/5.0.1: resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} engines: {node: '>=10'} dev: true - /decimal.js@10.4.3: + /decimal.js/10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true - /dedent@0.7.0: + /dedent/0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-equal@2.2.1: + /deep-equal/2.2.1: resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} dependencies: array-buffer-byte-length: 1.0.0 @@ -2882,36 +2830,36 @@ packages: which-typed-array: 1.1.9 dev: true - /deep-is@0.1.4: + /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /deepmerge@4.3.1: + /deepmerge/4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true - /defaults@1.0.4: + /defaults/1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true - /define-lazy-prop@2.0.0: + /define-lazy-prop/2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: false - /define-properties@1.2.0: + /define-properties/1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - /defined@1.0.1: + /defined/1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - /del-cli@5.0.0: + /del-cli/5.0.0: resolution: {integrity: sha512-rENFhUaYcjoMODwFhhlON+ogN7DoG+4+GFN+bsA1XeDt4w2OKQnQadFP1thHSAlK9FAtl88qgP66wOV+eFZZiQ==} engines: {node: '>=14.16'} hasBin: true @@ -2920,7 +2868,7 @@ packages: meow: 10.1.5 dev: true - /del@7.0.0: + /del/7.0.0: resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} engines: {node: '>=14.16'} dependencies: @@ -2934,37 +2882,37 @@ packages: slash: 4.0.0 dev: true - /delayed-stream@1.0.0: + /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /delegates@1.0.0: + /delegates/1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: true - /detect-indent@6.1.0: + /detect-indent/6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: true - /detect-libc@1.0.3: + /detect-libc/1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true dev: true - /detect-libc@2.0.1: + /detect-libc/2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} dev: true - /detect-newline@3.1.0: + /detect-newline/3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /detective@5.2.1: + /detective/5.2.1: resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} engines: {node: '>=0.8.0'} hasBin: true @@ -2973,76 +2921,76 @@ packages: defined: 1.0.1 minimist: 1.2.8 - /didyoumean@1.2.2: + /didyoumean/1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - /diff-sequences@29.4.3: + /diff-sequences/29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff@4.0.2: + /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - /dir-glob@3.0.1: + /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - /dlv@1.1.3: + /dlv/1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - /doctrine@2.1.0: + /doctrine/2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: false - /doctrine@3.0.0: + /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - /dom-accessibility-api@0.5.16: + /dom-accessibility-api/0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true - /domexception@4.0.0: + /domexception/4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: true - /dprint-node@1.0.7: + /dprint-node/1.0.7: resolution: {integrity: sha512-NTZOW9A7ipb0n7z7nC3wftvsbceircwVHSgzobJsEQa+7RnOMbhrfX5IflA6CtC4GA63DSAiHYXa4JKEy9F7cA==} dependencies: detect-libc: 1.0.3 dev: true - /eastasianwidth@0.2.0: + /eastasianwidth/0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.348: + /electron-to-chromium/1.4.348: resolution: {integrity: sha512-gM7TdwuG3amns/1rlgxMbeeyNoBFPa+4Uu0c7FeROWh4qWmvSOnvcslKmWy51ggLKZ2n/F/4i2HJ+PVNxH9uCQ==} - /emittery@0.13.1: + /emittery/0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emoji-regex@8.0.0: + /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - /emoji-regex@9.2.2: + /emoji-regex/9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - /enhanced-resolve@5.14.1: + /enhanced-resolve/5.14.1: resolution: {integrity: sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==} engines: {node: '>=10.13.0'} dependencies: @@ -3050,24 +2998,25 @@ packages: tapable: 2.2.1 dev: false - /enquirer@2.3.6: + /enquirer/2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 + dev: true - /entities@4.5.0: + /entities/4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} dev: true - /error-ex@1.3.2: + /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract@1.20.4: + /es-abstract/1.20.4: resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} engines: {node: '>= 0.4'} dependencies: @@ -3096,7 +3045,7 @@ packages: string.prototype.trimstart: 1.0.6 unbox-primitive: 1.0.2 - /es-get-iterator@1.1.3: + /es-get-iterator/1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 @@ -3110,12 +3059,12 @@ packages: stop-iteration-iterator: 1.0.0 dev: true - /es-shim-unscopables@1.0.0: + /es-shim-unscopables/1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 - /es-to-primitive@1.2.1: + /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -3123,7 +3072,7 @@ packages: is-date-object: 1.0.5 is-symbol: 1.0.4 - /esbuild-android-64@0.14.54: + /esbuild-android-64/0.14.54: resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} engines: {node: '>=12'} cpu: [x64] @@ -3132,7 +3081,7 @@ packages: dev: true optional: true - /esbuild-android-arm64@0.14.54: + /esbuild-android-arm64/0.14.54: resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} engines: {node: '>=12'} cpu: [arm64] @@ -3141,7 +3090,7 @@ packages: dev: true optional: true - /esbuild-darwin-64@0.14.54: + /esbuild-darwin-64/0.14.54: resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} engines: {node: '>=12'} cpu: [x64] @@ -3150,7 +3099,7 @@ packages: dev: true optional: true - /esbuild-darwin-arm64@0.14.54: + /esbuild-darwin-arm64/0.14.54: resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} engines: {node: '>=12'} cpu: [arm64] @@ -3159,7 +3108,7 @@ packages: dev: true optional: true - /esbuild-freebsd-64@0.14.54: + /esbuild-freebsd-64/0.14.54: resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} engines: {node: '>=12'} cpu: [x64] @@ -3168,7 +3117,7 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64@0.14.54: + /esbuild-freebsd-arm64/0.14.54: resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} engines: {node: '>=12'} cpu: [arm64] @@ -3177,7 +3126,7 @@ packages: dev: true optional: true - /esbuild-linux-32@0.14.54: + /esbuild-linux-32/0.14.54: resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} engines: {node: '>=12'} cpu: [ia32] @@ -3186,7 +3135,7 @@ packages: dev: true optional: true - /esbuild-linux-64@0.14.54: + /esbuild-linux-64/0.14.54: resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} engines: {node: '>=12'} cpu: [x64] @@ -3195,16 +3144,7 @@ packages: dev: true optional: true - /esbuild-linux-arm64@0.14.54: - resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /esbuild-linux-arm@0.14.54: + /esbuild-linux-arm/0.14.54: resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} engines: {node: '>=12'} cpu: [arm] @@ -3213,7 +3153,16 @@ packages: dev: true optional: true - /esbuild-linux-mips64le@0.14.54: + /esbuild-linux-arm64/0.14.54: + resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.14.54: resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} engines: {node: '>=12'} cpu: [mips64el] @@ -3222,7 +3171,7 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le@0.14.54: + /esbuild-linux-ppc64le/0.14.54: resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} engines: {node: '>=12'} cpu: [ppc64] @@ -3231,7 +3180,7 @@ packages: dev: true optional: true - /esbuild-linux-riscv64@0.14.54: + /esbuild-linux-riscv64/0.14.54: resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} engines: {node: '>=12'} cpu: [riscv64] @@ -3240,7 +3189,7 @@ packages: dev: true optional: true - /esbuild-linux-s390x@0.14.54: + /esbuild-linux-s390x/0.14.54: resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} engines: {node: '>=12'} cpu: [s390x] @@ -3249,7 +3198,7 @@ packages: dev: true optional: true - /esbuild-netbsd-64@0.14.54: + /esbuild-netbsd-64/0.14.54: resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} engines: {node: '>=12'} cpu: [x64] @@ -3258,7 +3207,7 @@ packages: dev: true optional: true - /esbuild-openbsd-64@0.14.54: + /esbuild-openbsd-64/0.14.54: resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} engines: {node: '>=12'} cpu: [x64] @@ -3267,7 +3216,7 @@ packages: dev: true optional: true - /esbuild-sunos-64@0.14.54: + /esbuild-sunos-64/0.14.54: resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} engines: {node: '>=12'} cpu: [x64] @@ -3276,7 +3225,7 @@ packages: dev: true optional: true - /esbuild-windows-32@0.14.54: + /esbuild-windows-32/0.14.54: resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} engines: {node: '>=12'} cpu: [ia32] @@ -3285,7 +3234,7 @@ packages: dev: true optional: true - /esbuild-windows-64@0.14.54: + /esbuild-windows-64/0.14.54: resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} engines: {node: '>=12'} cpu: [x64] @@ -3294,7 +3243,7 @@ packages: dev: true optional: true - /esbuild-windows-arm64@0.14.54: + /esbuild-windows-arm64/0.14.54: resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} engines: {node: '>=12'} cpu: [arm64] @@ -3303,7 +3252,7 @@ packages: dev: true optional: true - /esbuild@0.14.54: + /esbuild/0.14.54: resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} engines: {node: '>=12'} hasBin: true @@ -3332,29 +3281,29 @@ packages: esbuild-windows-arm64: 0.14.54 dev: true - /escalade@3.1.1: + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - /escape-string-regexp@1.0.5: + /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp@2.0.0: + /escape-string-regexp/2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /escape-string-regexp@4.0.0: + /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /escape-string-regexp@5.0.0: + /escape-string-regexp/5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} dev: true - /escodegen@2.0.0: + /escodegen/2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -3367,8 +3316,8 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-next@13.4.0(eslint@7.32.0)(typescript@4.9.3): - resolution: {integrity: sha512-FkO3QRyUEKAHM4ie0xAcxo7fQ8gWevuLqgf6/g1Y6zWybqSa4FNeJr4hqqTbP25xIRgUUIPILBlx9RSH4C6+gQ==} + /eslint-config-next/13.4.5_dewl7jrzrufmm6i6j6pp2pqhja: + resolution: {integrity: sha512-7qgJmRp9ClRzPgkzEz7ahK+Rasiv4k2aU3eqkkORzseNUGdtImZVYomcXUhUheHwkxzdN2p//nbIA7zJrCxsCg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -3376,41 +3325,41 @@ packages: typescript: optional: true dependencies: - '@next/eslint-plugin-next': 13.4.0 + '@next/eslint-plugin-next': 13.4.5 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.44.0(eslint@7.32.0)(typescript@4.9.3) - eslint: 7.32.0 + '@typescript-eslint/parser': 5.44.0_dewl7jrzrufmm6i6j6pp2pqhja + eslint: 8.28.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 3.5.2(eslint-plugin-import@2.26.0)(eslint@7.32.0) - eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.44.0)(eslint-import-resolver-typescript@3.5.2)(eslint@7.32.0) - eslint-plugin-jsx-a11y: 6.6.1(eslint@7.32.0) - eslint-plugin-react: 7.31.11(eslint@7.32.0) - eslint-plugin-react-hooks: 4.6.0(eslint@7.32.0) - typescript: 4.9.3 + eslint-import-resolver-typescript: 3.5.2_ktrec6dplf4now6nlbc6d67jee + eslint-plugin-import: 2.26.0_eslint@8.28.0 + eslint-plugin-jsx-a11y: 6.6.1_eslint@8.28.0 + eslint-plugin-react: 7.31.11_eslint@8.28.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.28.0 + typescript: 5.0.4 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /eslint-config-prettier@8.5.0(eslint@7.32.0): + /eslint-config-prettier/8.5.0_eslint@8.28.0: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 7.32.0 + eslint: 8.28.0 dev: false - /eslint-config-turbo@1.9.3(eslint@7.32.0): - resolution: {integrity: sha512-QG6jxFQkrGSpQqlFKefPdtgUfr20EbU0s4tGGIuGFOcPuJEdsY6VYZpZUxNJvmMcTGqPgMyOPjAFBKhy/DPHLA==} + /eslint-config-turbo/1.10.3_eslint@8.28.0: + resolution: {integrity: sha512-ggzPfTJfMsMS383oZ4zfTP1zQvyMyiigOQJRUnLt1nqII6SKkTzdKZdwmXRDHU24KFwUfEFtT6c8vnm2VhL0uQ==} peerDependencies: eslint: '>6.6.0' dependencies: - eslint: 7.32.0 - eslint-plugin-turbo: 1.9.3(eslint@7.32.0) + eslint: 8.28.0 + eslint-plugin-turbo: 1.10.3_eslint@8.28.0 dev: false - /eslint-import-resolver-node@0.3.6: + /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 @@ -3419,7 +3368,7 @@ packages: - supports-color dev: false - /eslint-import-resolver-typescript@3.5.2(eslint-plugin-import@2.26.0)(eslint@7.32.0): + /eslint-import-resolver-typescript/3.5.2_ktrec6dplf4now6nlbc6d67jee: resolution: {integrity: sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3428,8 +3377,8 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.14.1 - eslint: 7.32.0 - eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.44.0)(eslint-import-resolver-typescript@3.5.2)(eslint@7.32.0) + eslint: 8.28.0 + eslint-plugin-import: 2.26.0_eslint@8.28.0 get-tsconfig: 4.3.0 globby: 13.1.3 is-core-module: 2.11.0 @@ -3439,7 +3388,7 @@ packages: - supports-color dev: false - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.44.0)(eslint-import-resolver-node@0.3.6)(eslint-import-resolver-typescript@3.5.2)(eslint@7.32.0): + /eslint-module-utils/2.7.4_sjge656jyd3rr27cepuzx7h5u4: resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -3460,16 +3409,14 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.44.0(eslint@7.32.0)(typescript@4.9.3) debug: 3.2.7 - eslint: 7.32.0 + eslint: 8.28.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 3.5.2(eslint-plugin-import@2.26.0)(eslint@7.32.0) transitivePeerDependencies: - supports-color dev: false - /eslint-plugin-import@2.26.0(@typescript-eslint/parser@5.44.0)(eslint-import-resolver-typescript@3.5.2)(eslint@7.32.0): + /eslint-plugin-import/2.26.0_eslint@8.28.0: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -3479,14 +3426,13 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.44.0(eslint@7.32.0)(typescript@4.9.3) array-includes: 3.1.6 array.prototype.flat: 1.3.1 debug: 2.6.9 doctrine: 2.1.0 - eslint: 7.32.0 + eslint: 8.28.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.44.0)(eslint-import-resolver-node@0.3.6)(eslint-import-resolver-typescript@3.5.2)(eslint@7.32.0) + eslint-module-utils: 2.7.4_sjge656jyd3rr27cepuzx7h5u4 has: 1.0.3 is-core-module: 2.11.0 is-glob: 4.0.3 @@ -3500,7 +3446,7 @@ packages: - supports-color dev: false - /eslint-plugin-jsx-a11y@6.6.1(eslint@7.32.0): + /eslint-plugin-jsx-a11y/6.6.1_eslint@8.28.0: resolution: {integrity: sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==} engines: {node: '>=4.0'} peerDependencies: @@ -3514,7 +3460,7 @@ packages: axobject-query: 2.2.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 7.32.0 + eslint: 8.28.0 has: 1.0.3 jsx-ast-utils: 3.3.3 language-tags: 1.0.5 @@ -3522,16 +3468,16 @@ packages: semver: 6.3.0 dev: false - /eslint-plugin-react-hooks@4.6.0(eslint@7.32.0): + /eslint-plugin-react-hooks/4.6.0_eslint@8.28.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 7.32.0 + eslint: 8.28.0 dev: false - /eslint-plugin-react@7.28.0(eslint@7.32.0): + /eslint-plugin-react/7.28.0_eslint@8.28.0: resolution: {integrity: sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==} engines: {node: '>=4'} peerDependencies: @@ -3540,7 +3486,7 @@ packages: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 doctrine: 2.1.0 - eslint: 7.32.0 + eslint: 8.28.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -3554,7 +3500,7 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /eslint-plugin-react@7.31.11(eslint@7.32.0): + /eslint-plugin-react/7.31.11_eslint@8.28.0: resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} engines: {node: '>=4'} peerDependencies: @@ -3564,7 +3510,7 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 7.32.0 + eslint: 8.28.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -3578,41 +3524,62 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /eslint-plugin-turbo@1.9.3(eslint@7.32.0): - resolution: {integrity: sha512-ZsRtksdzk3v+z5/I/K4E50E4lfZ7oYmLX395gkrUMBz4/spJlYbr+GC8hP9oVNLj9s5Pvnm9rLv/zoj5PVYaVw==} + /eslint-plugin-turbo/1.10.3_eslint@8.28.0: + resolution: {integrity: sha512-g3Mnnk7el1FqxHfqbE/MayLvCsYjA/vKmAnUj66kV4AlM7p/EZqdt42NMcMSKtDVEm0w+utQkkzWG2Xsa0Pd/g==} peerDependencies: eslint: '>6.6.0' dependencies: - eslint: 7.32.0 + eslint: 8.28.0 dev: false - /eslint-scope@5.1.1: + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true - /eslint-utils@2.1.0: + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + + /eslint-utils/2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 + dev: true - /eslint-visitor-keys@1.3.0: + /eslint-utils/3.0.0_eslint@8.28.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.28.0 + eslint-visitor-keys: 2.1.0 + dev: false + + /eslint-visitor-keys/1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} + dev: true - /eslint-visitor-keys@2.1.0: + /eslint-visitor-keys/2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} - /eslint-visitor-keys@3.3.0: + /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /eslint@7.32.0: + /eslint/7.32.0: resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} engines: {node: ^10.12.0 || >=12.0.0} hasBin: true @@ -3659,45 +3626,106 @@ packages: v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color + dev: true - /espree@7.3.1: + /eslint/8.28.0: + resolution: {integrity: sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.3 + '@humanwhocodes/config-array': 0.11.7 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.28.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.18.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.2.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /espree/7.3.1: resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) + acorn-jsx: 5.3.2_acorn@7.4.1 eslint-visitor-keys: 1.3.0 + dev: true - /esprima@4.0.1: + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + eslint-visitor-keys: 3.3.0 + dev: false + + /esprima/4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + dev: true - /esquery@1.4.0: + /esquery/1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - /esrecurse@4.3.0: + /esrecurse/4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - /estraverse@4.3.0: + /estraverse/4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} + dev: true - /estraverse@5.3.0: + /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - /esutils@2.0.3: + /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - /execa@5.1.1: + /execa/5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -3712,7 +3740,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@6.1.0: + /execa/6.1.0: resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -3727,12 +3755,12 @@ packages: strip-final-newline: 3.0.0 dev: true - /exit@0.1.2: + /exit/0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect@29.5.0: + /expect/29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3743,11 +3771,11 @@ packages: jest-util: 29.5.0 dev: true - /extendable-error@0.1.7: + /extendable-error/0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true - /external-editor@3.1.0: + /external-editor/3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -3756,10 +3784,10 @@ packages: tmp: 0.0.33 dev: true - /fast-deep-equal@3.1.3: + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-glob@3.2.12: + /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -3769,36 +3797,36 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify@2.1.0: + /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - /fast-levenshtein@2.0.6: + /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fastq@1.13.0: + /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - /fb-watchman@2.0.2: + /fb-watchman/2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /file-entry-cache@6.0.1: + /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - /fill-range@7.0.1: + /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /find-up@4.1.0: + /find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: @@ -3806,38 +3834,37 @@ packages: path-exists: 4.0.0 dev: true - /find-up@5.0.0: + /find-up/5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - /find-yarn-workspace-root2@1.2.16: + /find-yarn-workspace-root2/1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 dev: true - /flat-cache@3.0.4: + /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 rimraf: 3.0.2 - /flatted@3.2.7: + /flatted/3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /for-each@0.3.3: + /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /form-data@4.0.0: + /form-data/4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -3846,11 +3873,11 @@ packages: mime-types: 2.1.35 dev: true - /fraction.js@4.2.0: + /fraction.js/4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true - /fs-extra@7.0.1: + /fs-extra/7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -3859,7 +3886,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra@8.1.0: + /fs-extra/8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -3868,27 +3895,27 @@ packages: universalify: 0.1.2 dev: true - /fs-minipass@2.1.0: + /fs-minipass/2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 dev: true - /fs.realpath@1.0.0: + /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: + /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true optional: true - /function-bind@1.1.1: + /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name@1.1.5: + /function.prototype.name/1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -3897,13 +3924,14 @@ packages: es-abstract: 1.20.4 functions-have-names: 1.2.3 - /functional-red-black-tree@1.0.1: + /functional-red-black-tree/1.0.1: resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true - /functions-have-names@1.2.3: + /functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - /gauge@3.0.2: + /gauge/3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} dependencies: @@ -3918,15 +3946,15 @@ packages: wide-align: 1.1.5 dev: true - /gensync@1.0.0-beta.2: + /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - /get-caller-file@2.0.5: + /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic@1.2.1: + /get-intrinsic/1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 @@ -3934,40 +3962,40 @@ packages: has-proto: 1.0.1 has-symbols: 1.0.3 - /get-package-type@0.1.0: + /get-package-type/0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stream@6.0.1: + /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-symbol-description@1.0.0: + /get-symbol-description/1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /get-tsconfig@4.3.0: + /get-tsconfig/4.3.0: resolution: {integrity: sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==} dev: false - /glob-parent@5.1.2: + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: + /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - /glob@7.1.6: + /glob/7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: fs.realpath: 1.0.0 @@ -3978,7 +4006,7 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob@7.1.7: + /glob/7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: fs.realpath: 1.0.0 @@ -3989,7 +4017,7 @@ packages: path-is-absolute: 1.0.1 dev: false - /glob@7.2.3: + /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -3999,21 +4027,21 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /globals@11.12.0: + /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.18.0: + /globals/13.18.0: resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - /globalyzer@0.1.0: + /globalyzer/0.1.0: resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} dev: false - /globby@11.1.0: + /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -4024,7 +4052,7 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /globby@13.1.3: + /globby/13.1.3: resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -4034,24 +4062,23 @@ packages: merge2: 1.4.1 slash: 4.0.0 - /globrex@0.1.2: + /globrex/0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: false - /gopd@1.0.1: + /gopd/1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.1 dev: true - /graceful-fs@4.2.10: + /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /grapheme-splitter@1.0.4: + /grapheme-splitter/1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /grpc-tools@1.11.3: + /grpc-tools/1.11.3: resolution: {integrity: sha512-cRSK2uhDKHtZ9hLRM35HxaMAMxyh/L7C96Ojt58DhQBdwTOQlV1VIJHSK6X/pDeSQKhaQqWMFfebt8tIcvRfjQ==} hasBin: true requiresBuild: true @@ -4062,74 +4089,74 @@ packages: - supports-color dev: true - /hard-rejection@2.1.0: + /hard-rejection/2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints@1.0.2: + /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - /has-flag@3.0.0: + /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - /has-flag@4.0.0: + /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.0: + /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.1 - /has-proto@1.0.1: + /has-proto/1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} - /has-symbols@1.0.3: + /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: + /has-tostringtag/1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - /has-unicode@2.0.1: + /has-unicode/2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: true - /has@1.0.3: + /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /hosted-git-info@2.8.9: + /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info@4.1.0: + /hosted-git-info/4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /html-encoding-sniffer@3.0.0: + /html-encoding-sniffer/3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-escaper@2.0.2: + /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-proxy-agent@5.0.0: + /http-proxy-agent/5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -4140,7 +4167,7 @@ packages: - supports-color dev: true - /https-proxy-agent@5.0.1: + /https-proxy-agent/5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -4150,53 +4177,54 @@ packages: - supports-color dev: true - /human-id@1.0.2: + /human-id/1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true - /human-signals@2.1.0: + /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /human-signals@3.0.1: + /human-signals/3.0.1: resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} engines: {node: '>=12.20.0'} dev: true - /iconv-lite@0.4.24: + /iconv-lite/0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /iconv-lite@0.6.3: + /iconv-lite/0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /ignore@4.0.6: + /ignore/4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} + dev: true - /ignore@5.2.0: + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} - /immutable@4.3.0: + /immutable/4.3.0: resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} - /import-fresh@3.3.0: + /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-local@3.1.0: + /import-local/3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -4205,30 +4233,30 @@ packages: resolve-cwd: 3.0.0 dev: true - /imurmurhash@0.1.4: + /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - /indent-string@4.0.0: + /indent-string/4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true - /indent-string@5.0.0: + /indent-string/5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} dev: true - /inflight@1.0.6: + /inflight/1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.4: + /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /internal-slot@1.0.5: + /internal-slot/1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: @@ -4236,7 +4264,7 @@ packages: has: 1.0.3 side-channel: 1.0.4 - /is-arguments@1.1.1: + /is-arguments/1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: @@ -4244,7 +4272,7 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-array-buffer@3.0.2: + /is-array-buffer/3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 @@ -4252,163 +4280,168 @@ packages: is-typed-array: 1.1.10 dev: true - /is-arrayish@0.2.1: + /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-bigint@1.0.4: + /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - /is-binary-path@2.1.0: + /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - /is-boolean-object@1.1.2: + /is-boolean-object/1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-callable@1.2.7: + /is-callable/1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - /is-ci@3.0.1: + /is-ci/3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: ci-info: 3.6.2 dev: true - /is-core-module@2.11.0: + /is-core-module/2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 - /is-date-object@1.0.5: + /is-date-object/1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - /is-docker@2.2.1: + /is-docker/2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: false - /is-extglob@2.1.1: + /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point@3.0.0: + /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - /is-fullwidth-code-point@4.0.0: + /is-fullwidth-code-point/4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} dev: true - /is-generator-fn@2.1.0: + /is-generator-fn/2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-glob@4.0.3: + /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - /is-map@2.0.2: + /is-map/2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true - /is-negative-zero@2.0.2: + /is-negative-zero/2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} - /is-number-object@1.0.7: + /is-number-object/1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - /is-number@7.0.0: + /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-path-cwd@3.0.0: + /is-path-cwd/3.0.0: resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-path-inside@4.0.0: + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false + + /is-path-inside/4.0.0: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} engines: {node: '>=12'} dev: true - /is-plain-obj@1.1.0: + /is-plain-obj/1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-potential-custom-element-name@1.0.1: + /is-potential-custom-element-name/1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-regex@1.1.4: + /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-set@2.0.2: + /is-set/2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true - /is-shared-array-buffer@1.0.2: + /is-shared-array-buffer/1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 - /is-stream@2.0.1: + /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-stream@3.0.0: + /is-stream/3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string@1.0.7: + /is-string/1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - /is-subdir@1.2.0: + /is-subdir/1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 dev: true - /is-symbol@1.0.4: + /is-symbol/1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - /is-typed-array@1.1.10: + /is-typed-array/1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -4419,42 +4452,42 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-weakmap@2.0.1: + /is-weakmap/2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true - /is-weakref@1.0.2: + /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 - /is-weakset@2.0.2: + /is-weakset/2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 dev: true - /is-windows@1.0.2: + /is-windows/1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} dev: true - /is-wsl@2.2.0: + /is-wsl/2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: false - /isarray@2.0.5: + /isarray/2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /isexe@2.0.0: + /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isomorphic-ws@5.0.0(ws@8.13.0): + /isomorphic-ws/5.0.0_ws@8.13.0: resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' @@ -4462,12 +4495,12 @@ packages: ws: 8.13.0 dev: false - /istanbul-lib-coverage@3.2.0: + /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument@5.2.1: + /istanbul-lib-instrument/5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: @@ -4480,7 +4513,7 @@ packages: - supports-color dev: true - /istanbul-lib-report@3.0.0: + /istanbul-lib-report/3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -4489,7 +4522,7 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps@4.0.1: + /istanbul-lib-source-maps/4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -4500,7 +4533,7 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.5: + /istanbul-reports/3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -4508,7 +4541,7 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files@29.5.0: + /jest-changed-files/29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4516,7 +4549,7 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus@29.5.0: + /jest-circus/29.5.0: resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4544,7 +4577,7 @@ packages: - supports-color dev: true - /jest-cli@29.5.0(@types/node@18.11.9)(ts-node@10.9.1): + /jest-cli/29.5.0_odkjkoia5xunhxkdrka32ib6vi: resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -4554,14 +4587,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/core': 29.5.0_ts-node@10.9.1 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) + jest-config: 29.5.0_odkjkoia5xunhxkdrka32ib6vi jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -4572,7 +4605,7 @@ packages: - ts-node dev: true - /jest-config@29.5.0(@types/node@18.11.9)(ts-node@10.9.1): + /jest-config/29.5.0_odkjkoia5xunhxkdrka32ib6vi: resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4588,7 +4621,7 @@ packages: '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.11.9 - babel-jest: 29.5.0(@babel/core@7.22.1) + babel-jest: 29.5.0_@babel+core@7.22.1 chalk: 4.1.2 ci-info: 3.6.2 deepmerge: 4.3.1 @@ -4607,12 +4640,12 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.11.9)(typescript@5.0.4) + ts-node: 10.9.1_d2gyhxeuxd6tnmgqdyixls47tq transitivePeerDependencies: - supports-color dev: true - /jest-diff@29.5.0: + /jest-diff/29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4622,14 +4655,14 @@ packages: pretty-format: 29.5.0 dev: true - /jest-docblock@29.4.3: + /jest-docblock/29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each@29.5.0: + /jest-each/29.5.0: resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4640,7 +4673,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-environment-jsdom@29.5.0: + /jest-environment-jsdom/29.5.0: resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4663,7 +4696,7 @@ packages: - utf-8-validate dev: true - /jest-environment-node@29.5.0: + /jest-environment-node/29.5.0: resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4675,12 +4708,12 @@ packages: jest-util: 29.5.0 dev: true - /jest-get-type@29.4.3: + /jest-get-type/29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map@29.5.0: + /jest-haste-map/29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4699,7 +4732,7 @@ packages: fsevents: 2.3.2 dev: true - /jest-leak-detector@29.5.0: + /jest-leak-detector/29.5.0: resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4707,7 +4740,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-matcher-utils@29.5.0: + /jest-matcher-utils/29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4717,7 +4750,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-message-util@29.5.0: + /jest-message-util/29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4732,7 +4765,7 @@ packages: stack-utils: 2.0.6 dev: true - /jest-mock@29.5.0: + /jest-mock/29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4741,7 +4774,7 @@ packages: jest-util: 29.5.0 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + /jest-pnp-resolver/1.2.3_jest-resolve@29.5.0: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -4753,12 +4786,12 @@ packages: jest-resolve: 29.5.0 dev: true - /jest-regex-util@29.4.3: + /jest-regex-util/29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies@29.5.0: + /jest-resolve-dependencies/29.5.0: resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4768,14 +4801,14 @@ packages: - supports-color dev: true - /jest-resolve@29.5.0: + /jest-resolve/29.5.0: resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-pnp-resolver: 1.2.3_jest-resolve@29.5.0 jest-util: 29.5.0 jest-validate: 29.5.0 resolve: 1.22.1 @@ -4783,7 +4816,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner@29.5.0: + /jest-runner/29.5.0: resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4812,7 +4845,7 @@ packages: - supports-color dev: true - /jest-runtime@29.5.0: + /jest-runtime/29.5.0: resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4842,22 +4875,22 @@ packages: - supports-color dev: true - /jest-snapshot@29.5.0: + /jest-snapshot/29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.22.1 '@babel/generator': 7.22.3 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.1) - '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1) + '@babel/plugin-syntax-jsx': 7.21.4_@babel+core@7.22.1 + '@babel/plugin-syntax-typescript': 7.21.4_@babel+core@7.22.1 '@babel/traverse': 7.22.4 '@babel/types': 7.22.4 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/babel__traverse': 7.18.5 - '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1) + '@types/babel__traverse': 7.20.1 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.22.1 chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -4873,7 +4906,7 @@ packages: - supports-color dev: true - /jest-util@29.5.0: + /jest-util/29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4885,7 +4918,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate@29.5.0: + /jest-validate/29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4897,7 +4930,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-watcher@29.5.0: + /jest-watcher/29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4911,7 +4944,7 @@ packages: string-length: 4.0.2 dev: true - /jest-worker@29.5.0: + /jest-worker/29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4921,7 +4954,7 @@ packages: supports-color: 8.1.1 dev: true - /jest@29.5.0(@types/node@18.11.9)(ts-node@10.9.1): + /jest/29.5.0_odkjkoia5xunhxkdrka32ib6vi: resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -4931,40 +4964,52 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) + '@jest/core': 29.5.0_ts-node@10.9.1 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) + jest-cli: 29.5.0_odkjkoia5xunhxkdrka32ib6vi transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jose@4.13.1: + /jose/4.13.1: resolution: {integrity: sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==} dev: false - /joycon@3.1.1: + /joycon/3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} dev: true - /js-base64@3.7.5: + /js-base64/3.7.5: resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} dev: false - /js-tokens@4.0.0: + /js-sdsl/4.2.0: + resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} + dev: false + + /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml@3.14.1: + /js-yaml/3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: true - /jsdom@20.0.3: + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /jsdom/20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} peerDependencies: @@ -4974,7 +5019,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.2 + acorn: 8.8.1 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -5005,43 +5050,44 @@ packages: - utf-8-validate dev: true - /jsesc@2.5.2: + /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - /json-parse-even-better-errors@2.3.1: + /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-schema-traverse@0.4.1: + /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - /json-schema-traverse@1.0.0: + /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true - /json-stable-stringify-without-jsonify@1.0.1: + /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - /json5@1.0.1: + /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true dependencies: minimist: 1.2.8 dev: false - /json5@2.2.3: + /json5/2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /jsonfile@4.0.0: + /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 dev: true - /jsx-ast-utils@3.3.3: + /jsx-ast-utils/3.3.3: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: @@ -5049,37 +5095,37 @@ packages: object.assign: 4.1.4 dev: false - /kind-of@6.0.3: + /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kleur@3.0.3: + /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /kleur@4.1.5: + /kleur/4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: true - /language-subtag-registry@0.3.22: + /language-subtag-registry/0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: false - /language-tags@1.0.5: + /language-tags/1.0.5: resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: false - /leven@3.1.0: + /leven/3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /levn@0.3.0: + /levn/0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: @@ -5087,27 +5133,27 @@ packages: type-check: 0.3.2 dev: true - /levn@0.4.1: + /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - /lilconfig@2.0.5: + /lilconfig/2.0.5: resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} engines: {node: '>=10'} dev: true - /lilconfig@2.0.6: + /lilconfig/2.0.6: resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} engines: {node: '>=10'} - /lines-and-columns@1.2.4: + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /lint-staged@13.0.3: + /lint-staged/13.0.3: resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true @@ -5130,7 +5176,7 @@ packages: - supports-color dev: true - /listr2@4.0.5: + /listr2/4.0.5: resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} engines: {node: '>=12'} peerDependencies: @@ -5149,12 +5195,12 @@ packages: wrap-ansi: 7.0.0 dev: true - /load-tsconfig@0.2.3: + /load-tsconfig/0.2.3: resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /load-yaml-file@0.2.0: + /load-yaml-file/0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} dependencies: @@ -5164,47 +5210,47 @@ packages: strip-bom: 3.0.0 dev: true - /locate-path@5.0.0: + /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true - /locate-path@6.0.0: + /locate-path/6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: true - /lodash.camelcase@4.3.0: + /lodash.camelcase/4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: false - /lodash.memoize@4.1.2: + /lodash.memoize/4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true - /lodash.merge@4.6.2: + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - /lodash.sortby@4.7.0: + /lodash.sortby/4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: true - /lodash.startcase@4.4.0: + /lodash.startcase/4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.truncate@4.4.2: + /lodash.truncate/4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true - /lodash@4.17.21: + /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /log-update@4.0.0: + /log-update/4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} dependencies: @@ -5214,43 +5260,43 @@ packages: wrap-ansi: 6.2.0 dev: true - /long@4.0.0: + /long/4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - /long@5.2.1: + /long/5.2.1: resolution: {integrity: sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==} dev: false - /loose-envify@1.4.0: + /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /lru-cache@4.1.5: + /lru-cache/4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 dev: true - /lru-cache@5.1.1: + /lru-cache/5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - /lru-cache@6.0.0: + /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /lz-string@1.5.0: + /lz-string/1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: true - /make-dir-cli@3.0.0: + /make-dir-cli/3.0.0: resolution: {integrity: sha512-8yCjIAOQ8tezWRJWUG3tbvN2I19hiVr8K5DPDVl8fECS3qz0ZbeL194ZGRdf8K3LgvbjDCTadge6NrN/I4XrNw==} engines: {node: '>=12.17'} hasBin: true @@ -5259,33 +5305,33 @@ packages: meow: 10.1.5 dev: true - /make-dir@3.1.0: + /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true - /make-error@1.3.6: + /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /makeerror@1.0.12: + /makeerror/1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /map-obj@1.0.1: + /map-obj/1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj@4.3.0: + /map-obj/4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /meow@10.1.5: + /meow/10.1.5: resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -5303,7 +5349,7 @@ packages: yargs-parser: 20.2.9 dev: true - /meow@6.1.1: + /meow/6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} dependencies: @@ -5320,58 +5366,58 @@ packages: yargs-parser: 18.1.3 dev: true - /merge-stream@2.0.0: + /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2@1.4.1: + /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /micromatch@4.0.5: + /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db@1.52.0: + /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} dev: true - /mime-types@2.1.35: + /mime-types/2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /mimic-fn@2.1.0: + /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-fn@4.0.0: + /mimic-fn/4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /min-indent@1.0.1: + /min-indent/1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true - /mini-svg-data-uri@1.4.4: + /mini-svg-data-uri/1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - /minimatch@3.1.2: + /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimist-options@4.1.0: + /minimist-options/4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -5380,22 +5426,22 @@ packages: kind-of: 6.0.3 dev: true - /minimist@1.2.8: + /minimist/1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /minipass@3.3.6: + /minipass/3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 dev: true - /minipass@4.2.5: + /minipass/4.2.5: resolution: {integrity: sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==} engines: {node: '>=8'} dev: true - /minizlib@2.1.2: + /minizlib/2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} dependencies: @@ -5403,33 +5449,33 @@ packages: yallist: 4.0.0 dev: true - /mixme@0.5.4: + /mixme/0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true - /mkdirp@1.0.4: + /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true dev: true - /moment@2.29.4: + /moment/2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: false - /ms@2.0.0: + /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false - /ms@2.1.2: + /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms@2.1.3: + /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false - /mz@2.7.0: + /mz/2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 @@ -5437,27 +5483,27 @@ packages: thenify-all: 1.6.0 dev: true - /nanoid@3.3.4: + /nanoid/3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare@1.4.0: + /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /next-themes@0.2.1(next@13.4.2)(react-dom@18.2.0)(react@18.2.0): + /next-themes/0.2.1_cmp7sjki5xcmfyvhcokzzink7a: resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 13.4.2(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0) + next: 13.4.2_bteaqif5pz4zkv4h4kccxuyuxu react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react-dom: 18.2.0_react@18.2.0 dev: false - /next@13.2.3(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0): + /next/13.2.3_gxeylg6mfvtzvytsvwl7cjkzse: resolution: {integrity: sha512-nKFJC6upCPN7DWRx4+0S/1PIOT7vNlCT157w9AzbXEgKy6zkiPKEt5YyRUsRZkmpEqBVrGgOqNfwecTociyg+w==} engines: {node: '>=14.6.0'} hasBin: true @@ -5483,8 +5529,8 @@ packages: caniuse-lite: 1.0.30001434 postcss: 8.4.14 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.22.1)(react@18.2.0) + react-dom: 18.2.0_react@18.2.0 + styled-jsx: 5.1.1_cealaxz4az2u5bjp2e6aea3kui optionalDependencies: '@next/swc-android-arm-eabi': 13.2.3 '@next/swc-android-arm64': 13.2.3 @@ -5504,7 +5550,7 @@ packages: - babel-plugin-macros dev: false - /next@13.4.2(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0): + /next/13.4.2_bteaqif5pz4zkv4h4kccxuyuxu: resolution: {integrity: sha512-aNFqLs3a3nTGvLWlO9SUhCuMUHVPSFQC0+tDNGAsDXqx+WJDFSbvc233gOJ5H19SBc7nw36A9LwQepOJ2u/8Kg==} engines: {node: '>=16.8.0'} hasBin: true @@ -5531,9 +5577,9 @@ packages: caniuse-lite: 1.0.30001473 postcss: 8.4.14 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react-dom: 18.2.0_react@18.2.0 sass: 1.62.0 - styled-jsx: 5.1.1(@babel/core@7.22.1)(react@18.2.0) + styled-jsx: 5.1.1_cealaxz4az2u5bjp2e6aea3kui zod: 3.21.4 optionalDependencies: '@next/swc-darwin-arm64': 13.4.2 @@ -5550,24 +5596,24 @@ packages: - babel-plugin-macros dev: false - /nice-grpc-common@2.0.2: + /nice-grpc-common/2.0.2: resolution: {integrity: sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==} dependencies: ts-error: 1.0.6 dev: false - /nice-grpc-web@3.2.3(ws@8.13.0): + /nice-grpc-web/3.2.3_ws@8.13.0: resolution: {integrity: sha512-oNuCBhCffmpED/dTtbQycKkMkJ6DCaPeyi/W/hbLaGIZfiwSFg+kmWSKmTdI07XqMQ1POKxn//bdldXZsE1ZUg==} dependencies: abort-controller-x: 0.4.1 - isomorphic-ws: 5.0.0(ws@8.13.0) + isomorphic-ws: 5.0.0_ws@8.13.0 js-base64: 3.7.5 nice-grpc-common: 2.0.2 transitivePeerDependencies: - ws dev: false - /nice-grpc@2.0.1: + /nice-grpc/2.0.1: resolution: {integrity: sha512-Q5CGXO08STsv+HAkXeFgRayANT62X1LnIDhNXdCf+LP0XaP7EiHM0Cr3QefnoFjDZAx/Kxq+qiQfY66BrtKcNQ==} dependencies: '@grpc/grpc-js': 1.8.13 @@ -5575,8 +5621,8 @@ packages: nice-grpc-common: 2.0.2 dev: false - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} + /node-fetch/2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -5587,14 +5633,14 @@ packages: whatwg-url: 5.0.0 dev: true - /node-int64@0.4.0: + /node-int64/0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases@2.0.10: + /node-releases/2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - /nopt@5.0.0: + /nopt/5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} hasBin: true @@ -5602,7 +5648,7 @@ packages: abbrev: 1.1.1 dev: true - /normalize-package-data@2.5.0: + /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -5611,7 +5657,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data@3.0.3: + /normalize-package-data/3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -5621,30 +5667,30 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path@3.0.0: + /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - /normalize-range@0.1.2: + /normalize-range/0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path@4.0.1: + /npm-run-path/4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /npm-run-path@5.1.0: + /npm-run-path/5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true - /npmlog@5.0.1: + /npmlog/5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} dependencies: are-we-there-yet: 2.0.0 @@ -5653,27 +5699,27 @@ packages: set-blocking: 2.0.0 dev: true - /nwsapi@2.2.5: + /nwsapi/2.2.5: resolution: {integrity: sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==} dev: true - /object-assign@4.1.1: + /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-hash@1.3.1: + /object-hash/1.3.1: resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} engines: {node: '>= 0.10.0'} dev: true - /object-hash@3.0.0: + /object-hash/3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - /object-inspect@1.12.2: + /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - /object-is@1.1.5: + /object-is/1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: @@ -5681,11 +5727,11 @@ packages: define-properties: 1.2.0 dev: true - /object-keys@1.1.1: + /object-keys/1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - /object.assign@4.1.4: + /object.assign/4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -5694,7 +5740,7 @@ packages: has-symbols: 1.0.3 object-keys: 1.1.1 - /object.entries@1.1.6: + /object.entries/1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: @@ -5703,7 +5749,7 @@ packages: es-abstract: 1.20.4 dev: false - /object.fromentries@2.0.6: + /object.fromentries/2.0.6: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: @@ -5712,14 +5758,14 @@ packages: es-abstract: 1.20.4 dev: false - /object.hasown@1.1.2: + /object.hasown/1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.2.0 es-abstract: 1.20.4 dev: false - /object.values@1.1.6: + /object.values/1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: @@ -5728,26 +5774,26 @@ packages: es-abstract: 1.20.4 dev: false - /once@1.4.0: + /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime@5.1.2: + /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /onetime@6.0.0: + /onetime/6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true - /open@8.4.0: + /open/8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} dependencies: @@ -5756,7 +5802,7 @@ packages: is-wsl: 2.2.0 dev: false - /optionator@0.8.3: + /optionator/0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -5768,7 +5814,7 @@ packages: word-wrap: 1.2.3 dev: true - /optionator@0.9.1: + /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -5779,81 +5825,79 @@ packages: type-check: 0.4.0 word-wrap: 1.2.3 - /os-tmpdir@1.0.2: + /os-tmpdir/1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outdent@0.5.0: + /outdent/0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true - /p-filter@2.1.0: + /p-filter/2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} dependencies: p-map: 2.1.0 dev: true - /p-limit@2.3.0: + /p-limit/2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true - /p-limit@3.1.0: + /p-limit/3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: true - /p-locate@4.1.0: + /p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true - /p-locate@5.0.0: + /p-locate/5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true - /p-map@2.1.0: + /p-map/2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} dev: true - /p-map@4.0.0: + /p-map/4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 dev: true - /p-map@5.5.0: + /p-map/5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} dependencies: aggregate-error: 4.0.1 dev: true - /p-try@2.2.0: + /p-try/2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: true - /parent-module@1.0.1: + /parent-module/1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 - /parse-json@5.2.0: + /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -5863,72 +5907,71 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse5@7.1.2: + /parse5/7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 dev: true - /path-exists@4.0.0: + /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true - /path-is-absolute@1.0.1: + /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key@3.1.1: + /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-key@4.0.0: + /path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true - /path-parse@1.0.7: + /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-type@4.0.0: + /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /picocolors@1.0.0: + /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch@2.3.1: + /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pidtree@0.6.0: + /pidtree/0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} hasBin: true dev: true - /pify@2.3.0: + /pify/2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - /pify@4.0.1: + /pify/4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} dev: true - /pirates@4.0.5: + /pirates/4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} dev: true - /pkg-dir@4.2.0: + /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /postcss-import@14.1.0(postcss@8.4.21): + /postcss-import/14.1.0_postcss@8.4.21: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -5939,7 +5982,7 @@ packages: read-cache: 1.0.0 resolve: 1.22.1 - /postcss-js@4.0.1(postcss@8.4.21): + /postcss-js/4.0.1_postcss@8.4.21: resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: @@ -5948,7 +5991,7 @@ packages: camelcase-css: 2.0.1 postcss: 8.4.21 - /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): + /postcss-load-config/3.1.4_aesdjsunmf4wiehhujt67my7tu: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -5962,10 +6005,10 @@ packages: dependencies: lilconfig: 2.0.6 postcss: 8.4.21 - ts-node: 10.9.1(@types/node@18.11.9)(typescript@5.0.4) + ts-node: 10.9.1_d2gyhxeuxd6tnmgqdyixls47tq yaml: 1.10.2 - /postcss-load-config@3.1.4(ts-node@10.9.1): + /postcss-load-config/3.1.4_postcss@8.4.21: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -5978,11 +6021,28 @@ packages: optional: true dependencies: lilconfig: 2.0.6 - ts-node: 10.9.1(@types/node@18.11.9)(typescript@4.9.3) + postcss: 8.4.21 yaml: 1.10.2 dev: true - /postcss-nested@6.0.0(postcss@8.4.21): + /postcss-load-config/3.1.4_ts-node@10.9.1: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + ts-node: 10.9.1_wup25etrarvlqkprac7h35hj7u + yaml: 1.10.2 + dev: true + + /postcss-nested/6.0.0_postcss@8.4.21: resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} peerDependencies: @@ -5991,17 +6051,17 @@ packages: postcss: 8.4.21 postcss-selector-parser: 6.0.11 - /postcss-selector-parser@6.0.11: + /postcss-selector-parser/6.0.11: resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - /postcss-value-parser@4.2.0: + /postcss-value-parser/4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss@8.4.14: + /postcss/8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -6010,7 +6070,7 @@ packages: source-map-js: 1.0.2 dev: false - /postcss@8.4.21: + /postcss/8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -6018,7 +6078,7 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preferred-pm@3.0.3: + /preferred-pm/3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} dependencies: @@ -6028,16 +6088,16 @@ packages: which-pm: 2.0.0 dev: true - /prelude-ls@1.1.2: + /prelude-ls/1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true - /prelude-ls@1.2.1: + /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - /prettier-plugin-tailwindcss@0.1.13(prettier@2.8.0): + /prettier-plugin-tailwindcss/0.1.13_prettier@2.8.0: resolution: {integrity: sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw==} engines: {node: '>=12.17.0'} peerDependencies: @@ -6046,13 +6106,13 @@ packages: prettier: 2.8.0 dev: true - /prettier@2.8.0: + /prettier/2.8.0: resolution: {integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-format@27.5.1: + /pretty-format/27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -6061,7 +6121,7 @@ packages: react-is: 17.0.2 dev: true - /pretty-format@29.5.0: + /pretty-format/29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6070,11 +6130,12 @@ packages: react-is: 18.2.0 dev: true - /progress@2.0.3: + /progress/2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + dev: true - /prompts@2.4.2: + /prompts/2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: @@ -6082,7 +6143,7 @@ packages: sisteransi: 1.0.5 dev: true - /prop-types@15.8.1: + /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -6090,7 +6151,7 @@ packages: react-is: 16.13.1 dev: false - /protobufjs@6.11.3: + /protobufjs/6.11.3: resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==} hasBin: true requiresBuild: true @@ -6110,7 +6171,7 @@ packages: long: 4.0.0 dev: true - /protobufjs@7.2.3: + /protobufjs/7.2.3: resolution: {integrity: sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==} engines: {node: '>=12.0.0'} requiresBuild: true @@ -6129,39 +6190,39 @@ packages: long: 5.2.1 dev: false - /pseudomap@1.0.2: + /pseudomap/1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /psl@1.9.0: + /psl/1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /punycode@2.1.1: + /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - /pure-rand@6.0.2: + /pure-rand/6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true - /querystringify@2.2.0: + /querystringify/2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /queue-microtask@1.2.3: + /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /quick-lru@4.0.1: + /quick-lru/4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /quick-lru@5.1.1: + /quick-lru/5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} - /react-dom@18.2.0(react@18.2.0): + /react-dom/18.2.0_react@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: react: ^18.2.0 @@ -6170,7 +6231,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-hook-form@7.39.5(react@18.2.0): + /react-hook-form/7.39.5_react@18.2.0: resolution: {integrity: sha512-OE0HKyz5IPc6svN2wd+e+evidZrw4O4WZWAWYzQVZuHi+hYnHFSLnxOq0ddjbdmaLIsLHut/ab7j72y2QT3+KA==} engines: {node: '>=12.22.0'} peerDependencies: @@ -6179,30 +6240,30 @@ packages: react: 18.2.0 dev: false - /react-is@16.13.1: + /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false - /react-is@17.0.2: + /react-is/17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is@18.2.0: + /react-is/18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react@18.2.0: + /react/18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - /read-cache@1.0.0: + /read-cache/1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 - /read-pkg-up@7.0.1: + /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -6211,7 +6272,7 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up@8.0.0: + /read-pkg-up/8.0.0: resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} engines: {node: '>=12'} dependencies: @@ -6220,7 +6281,7 @@ packages: type-fest: 1.4.0 dev: true - /read-pkg@5.2.0: + /read-pkg/5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -6230,7 +6291,7 @@ packages: type-fest: 0.6.0 dev: true - /read-pkg@6.0.0: + /read-pkg/6.0.0: resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} engines: {node: '>=12'} dependencies: @@ -6240,7 +6301,7 @@ packages: type-fest: 1.4.0 dev: true - /read-yaml-file@1.1.0: + /read-yaml-file/1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} dependencies: @@ -6250,7 +6311,7 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream@3.6.2: + /readable-stream/3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} dependencies: @@ -6259,13 +6320,13 @@ packages: util-deprecate: 1.0.2 dev: true - /readdirp@3.6.0: + /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - /redent@3.0.0: + /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -6273,7 +6334,7 @@ packages: strip-indent: 3.0.0 dev: true - /redent@4.0.0: + /redent/4.0.0: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} dependencies: @@ -6281,10 +6342,10 @@ packages: strip-indent: 4.0.0 dev: true - /regenerator-runtime@0.13.11: + /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regexp.prototype.flags@1.5.0: + /regexp.prototype.flags/1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: @@ -6292,48 +6353,49 @@ packages: define-properties: 1.2.0 functions-have-names: 1.2.3 - /regexpp@3.2.0: + /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - /require-directory@2.1.1: + /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - /require-from-string@2.0.2: + /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + dev: true - /require-main-filename@2.0.0: + /require-main-filename/2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} dev: true - /requires-port@1.0.0: + /requires-port/1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-cwd@3.0.0: + /resolve-cwd/3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from@4.0.0: + /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - /resolve-from@5.0.0: + /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve.exports@2.0.2: + /resolve.exports/2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve@1.22.1: + /resolve/1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: @@ -6341,7 +6403,7 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.4: + /resolve/2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: @@ -6350,7 +6412,7 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: false - /restore-cursor@3.1.0: + /restore-cursor/3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} dependencies: @@ -6358,21 +6420,21 @@ packages: signal-exit: 3.0.7 dev: true - /reusify@1.0.4: + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rfdc@1.3.0: + /rfdc/1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: true - /rimraf@3.0.2: + /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - /rollup@2.79.1: + /rollup/2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true @@ -6380,33 +6442,33 @@ packages: fsevents: 2.3.2 dev: true - /run-parallel@1.2.0: + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /rxjs@7.8.0: + /rxjs/7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: tslib: 2.4.1 dev: true - /safe-buffer@5.2.1: + /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test@1.0.0: + /safe-regex-test/1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 is-regex: 1.1.4 - /safer-buffer@2.1.2: + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass@1.62.0: + /sass/1.62.0: resolution: {integrity: sha512-Q4USplo4pLYgCi+XlipZCWUQz5pkg/ruSSgJ0WRDSb/+3z9tXUOkQ7QPYn4XrhZKYAK4HlpaQecRwKLJX6+DBg==} engines: {node: '>=14.0.0'} hasBin: true @@ -6415,84 +6477,84 @@ packages: immutable: 4.3.0 source-map-js: 1.0.2 - /saxes@6.0.0: + /saxes/6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /scheduler@0.23.0: + /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - /semver@5.7.1: + /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver@6.3.0: + /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver@7.3.8: + /semver/7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - /set-blocking@2.0.0: + /set-blocking/2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true - /shebang-command@1.2.0: + /shebang-command/1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command@2.0.0: + /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - /shebang-regex@1.0.0: + /shebang-regex/1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex@3.0.0: + /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /side-channel@1.0.4: + /side-channel/1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 object-inspect: 1.12.2 - /signal-exit@3.0.7: + /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sisteransi@1.0.5: + /sisteransi/1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /slash@3.0.0: + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /slash@4.0.0: + /slash/4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - /slice-ansi@3.0.0: + /slice-ansi/3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} dependencies: @@ -6501,15 +6563,16 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /slice-ansi@4.0.0: + /slice-ansi/4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + dev: true - /slice-ansi@5.0.0: + /slice-ansi/5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} dependencies: @@ -6517,7 +6580,7 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /smartwrap@2.0.2: + /smartwrap/2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} hasBin: true @@ -6530,92 +6593,93 @@ packages: yargs: 15.4.1 dev: true - /source-map-js@1.0.2: + /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support@0.5.13: + /source-map-support/0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map@0.6.1: + /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /source-map@0.8.0-beta.0: + /source-map/0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} dependencies: whatwg-url: 7.1.0 dev: true - /spawndamnit@2.0.0: + /spawndamnit/2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 dev: true - /spdx-correct@3.1.1: + /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: true - /spdx-exceptions@2.3.0: + /spdx-exceptions/2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse@3.0.1: + /spdx-expression-parse/3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: true - /spdx-license-ids@3.0.12: + /spdx-license-ids/3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true - /sprintf-js@1.0.3: + /sprintf-js/1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true - /stack-utils@2.0.6: + /stack-utils/2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /stop-iteration-iterator@1.0.0: + /stop-iteration-iterator/1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: internal-slot: 1.0.5 dev: true - /stream-transform@2.1.3: + /stream-transform/2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.4 dev: true - /streamsearch@1.1.0: + /streamsearch/1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: false - /string-argv@0.3.1: + /string-argv/0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} dev: true - /string-length@4.0.2: + /string-length/4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -6623,7 +6687,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width@4.2.3: + /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -6631,7 +6695,7 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: + /string-width/5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -6640,7 +6704,7 @@ packages: strip-ansi: 7.0.1 dev: true - /string.prototype.matchall@4.0.8: + /string.prototype.matchall/4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 @@ -6653,77 +6717,77 @@ packages: side-channel: 1.0.4 dev: false - /string.prototype.trimend@1.0.6: + /string.prototype.trimend/1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.20.4 - /string.prototype.trimstart@1.0.6: + /string.prototype.trimstart/1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 define-properties: 1.2.0 es-abstract: 1.20.4 - /string_decoder@1.3.0: + /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /strip-ansi@6.0.1: + /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.0.1: + /strip-ansi/7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 dev: true - /strip-bom@3.0.0: + /strip-bom/3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - /strip-bom@4.0.0: + /strip-bom/4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-final-newline@2.0.0: + /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-final-newline@3.0.0: + /strip-final-newline/3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} dev: true - /strip-indent@3.0.0: + /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - /strip-indent@4.0.0: + /strip-indent/4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments@3.1.1: + /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /styled-jsx@5.1.1(@babel/core@7.22.1)(react@18.2.0): + /styled-jsx/5.1.1_cealaxz4az2u5bjp2e6aea3kui: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -6741,7 +6805,7 @@ packages: react: 18.2.0 dev: false - /sucrase@3.29.0: + /sucrase/3.29.0: resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} engines: {node: '>=8'} hasBin: true @@ -6754,34 +6818,34 @@ packages: ts-interface-checker: 0.1.13 dev: true - /supports-color@5.5.0: + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: + /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: + /supports-color/8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag@1.0.0: + /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /symbol-tree@3.2.4: + /symbol-tree/3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit@0.8.4: + /synckit/0.8.4: resolution: {integrity: sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: @@ -6789,17 +6853,18 @@ packages: tslib: 2.4.1 dev: false - /table@6.8.1: + /table/6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} dependencies: - ajv: 8.12.0 + ajv: 8.11.2 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: true - /tailwindcss@3.2.4(postcss@8.4.21)(ts-node@10.9.1): + /tailwindcss/3.2.4_aesdjsunmf4wiehhujt67my7tu: resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} engines: {node: '>=12.13.0'} hasBin: true @@ -6821,10 +6886,10 @@ packages: object-hash: 3.0.0 picocolors: 1.0.0 postcss: 8.4.21 - postcss-import: 14.1.0(postcss@8.4.21) - postcss-js: 4.0.1(postcss@8.4.21) - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) - postcss-nested: 6.0.0(postcss@8.4.21) + postcss-import: 14.1.0_postcss@8.4.21 + postcss-js: 4.0.1_postcss@8.4.21 + postcss-load-config: 3.1.4_aesdjsunmf4wiehhujt67my7tu + postcss-nested: 6.0.0_postcss@8.4.21 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -6832,12 +6897,46 @@ packages: transitivePeerDependencies: - ts-node - /tapable@2.2.1: + /tailwindcss/3.2.4_postcss@8.4.21: + resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.0.6 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-import: 14.1.0_postcss@8.4.21 + postcss-js: 4.0.1_postcss@8.4.21 + postcss-load-config: 3.1.4_postcss@8.4.21 + postcss-nested: 6.0.0_postcss@8.4.21 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: true + + /tapable/2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} dev: false - /tar@6.1.13: + /tar/6.1.13: resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} engines: {node: '>=10'} dependencies: @@ -6849,12 +6948,12 @@ packages: yallist: 4.0.0 dev: true - /term-size@2.2.1: + /term-size/2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true - /test-exclude@6.0.0: + /test-exclude/6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -6863,59 +6962,59 @@ packages: minimatch: 3.1.2 dev: true - /text-table@0.2.0: + /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - /thenify-all@1.6.0: + /thenify-all/1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 dev: true - /thenify@3.3.1: + /thenify/3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 dev: true - /through@2.3.8: + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /tiny-glob@0.2.9: + /tiny-glob/0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 dev: false - /tinycolor2@1.4.2: + /tinycolor2/1.4.2: resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==} dev: false - /tmp@0.0.33: + /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /tmpl@1.0.5: + /tmpl/1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties@2.0.0: + /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-regex-range@5.0.1: + /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /tough-cookie@4.1.2: + /tough-cookie/4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} dependencies: @@ -6925,47 +7024,47 @@ packages: url-parse: 1.5.10 dev: true - /tr46@0.0.3: + /tr46/0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /tr46@1.0.1: + /tr46/1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: punycode: 2.1.1 dev: true - /tr46@3.0.0: + /tr46/3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: punycode: 2.1.1 dev: true - /tree-kill@1.2.2: + /tree-kill/1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true dev: true - /trim-newlines@3.0.1: + /trim-newlines/3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /trim-newlines@4.1.1: + /trim-newlines/4.1.1: resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} engines: {node: '>=12'} dev: true - /ts-error@1.0.6: + /ts-error/1.0.6: resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} dev: false - /ts-interface-checker@0.1.13: + /ts-interface-checker/0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /ts-jest@29.1.0(@babel/core@7.22.1)(@jest/types@29.5.0)(jest@29.5.0)(typescript@5.0.4): + /ts-jest/29.1.0_7mvqblmutgu6adr4pyrltf7n7q: resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6990,7 +7089,7 @@ packages: '@jest/types': 29.5.0 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) + jest: 29.5.0_odkjkoia5xunhxkdrka32ib6vi jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -7000,7 +7099,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-jest@29.1.0(@babel/core@7.22.1)(esbuild@0.14.54)(jest@29.5.0)(typescript@4.9.3): + /ts-jest/29.1.0_klkfcs562lk2rvu455ax6ckzhq: resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7025,7 +7124,7 @@ packages: bs-logger: 0.2.6 esbuild: 0.14.54 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.11.9)(ts-node@10.9.1) + jest: 29.5.0_odkjkoia5xunhxkdrka32ib6vi jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -7035,7 +7134,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.11.9)(typescript@4.9.3): + /ts-node/10.9.1_d2gyhxeuxd6tnmgqdyixls47tq: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -7055,7 +7154,37 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.11.9 - acorn: 8.8.2 + acorn: 8.8.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.0.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + /ts-node/10.9.1_wup25etrarvlqkprac7h35hj7u: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.11.9 + acorn: 8.8.1 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -7066,50 +7195,20 @@ packages: yn: 3.1.1 dev: true - /ts-node@10.9.1(@types/node@18.11.9)(typescript@5.0.4): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.11.9 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.0.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - /ts-poet@6.4.1: + /ts-poet/6.4.1: resolution: {integrity: sha512-AjZEs4h2w4sDfwpHMxQKHrTlNh2wRbM5NRXmLz0RiH+yPGtSQFbe9hBpNocU8vqVNgfh0BIOiXR80xDz3kKxUQ==} dependencies: dprint-node: 1.0.7 dev: true - /ts-proto-descriptors@1.8.0: + /ts-proto-descriptors/1.8.0: resolution: {integrity: sha512-iV20plcI8+GRkeZIAygxOOH0p2xpOsKfw9kI1W20NCwawi1/4bG/YRd9rQY9XSJP+lD9j7XbSy3tFFuikfsljw==} dependencies: long: 4.0.0 protobufjs: 6.11.3 dev: true - /ts-proto@1.146.0: + /ts-proto/1.146.0: resolution: {integrity: sha512-OyBZRjmqqw+aatLEUbRooWO6VKTtOLJQyaQFMciigEZPNgTsWtApqHpQDtqDMQFWEXhIARqEV+B7ZJx8cljhZA==} hasBin: true dependencies: @@ -7122,7 +7221,7 @@ packages: ts-proto-descriptors: 1.8.0 dev: true - /tsconfig-paths@3.14.1: + /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: '@types/json5': 0.0.29 @@ -7131,14 +7230,14 @@ packages: strip-bom: 3.0.0 dev: false - /tslib@1.14.1: + /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: false - /tslib@2.4.1: + /tslib/2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - /tsup@5.12.9(postcss@8.4.21)(ts-node@10.9.1)(typescript@4.9.3): + /tsup/5.12.9_2dtigtkb225m7ii7q45utxqwgi: resolution: {integrity: sha512-dUpuouWZYe40lLufo64qEhDpIDsWhRbr2expv5dHEMjwqeKJS2aXA/FPqs1dxO4T6mBojo7rvo3jP9NNzaKyDg==} hasBin: true peerDependencies: @@ -7153,7 +7252,42 @@ packages: typescript: optional: true dependencies: - bundle-require: 3.1.2(esbuild@0.14.54) + bundle-require: 3.1.2_esbuild@0.14.54 + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.14.54 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4_ts-node@10.9.1 + resolve-from: 5.0.0 + rollup: 2.79.1 + source-map: 0.8.0-beta.0 + sucrase: 3.29.0 + tree-kill: 1.2.2 + typescript: 4.9.3 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /tsup/5.12.9_ux7av2aepstrav2yvxv4jydcsa: + resolution: {integrity: sha512-dUpuouWZYe40lLufo64qEhDpIDsWhRbr2expv5dHEMjwqeKJS2aXA/FPqs1dxO4T6mBojo7rvo3jP9NNzaKyDg==} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: ^4.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 3.1.2_esbuild@0.14.54 cac: 6.7.14 chokidar: 3.5.3 debug: 4.3.4 @@ -7162,7 +7296,7 @@ packages: globby: 11.1.0 joycon: 3.1.1 postcss: 8.4.21 - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) + postcss-load-config: 3.1.4_aesdjsunmf4wiehhujt67my7tu resolve-from: 5.0.0 rollup: 2.79.1 source-map: 0.8.0-beta.0 @@ -7174,52 +7308,17 @@ packages: - ts-node dev: true - /tsup@5.12.9(ts-node@10.9.1)(typescript@4.9.3): - resolution: {integrity: sha512-dUpuouWZYe40lLufo64qEhDpIDsWhRbr2expv5dHEMjwqeKJS2aXA/FPqs1dxO4T6mBojo7rvo3jP9NNzaKyDg==} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: ^4.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - dependencies: - bundle-require: 3.1.2(esbuild@0.14.54) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.14.54 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 3.1.4(ts-node@10.9.1) - resolve-from: 5.0.0 - rollup: 2.79.1 - source-map: 0.8.0-beta.0 - sucrase: 3.29.0 - tree-kill: 1.2.2 - typescript: 4.9.3 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /tsutils@3.21.0(typescript@4.9.3): + /tsutils/3.21.0_typescript@5.0.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.3 + typescript: 5.0.4 dev: false - /tty-table@4.1.6: + /tty-table/4.1.6: resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} engines: {node: '>=8.0.0'} hasBin: true @@ -7233,125 +7332,126 @@ packages: yargs: 17.7.2 dev: true - /turbo-darwin-64@1.9.8: - resolution: {integrity: sha512-PkTdBjPfgpj/Dob/6SjkzP0BBP80/KmFjLEocXVEECCLJE6tHKbWLRdvc79B0N6SufdYdZ1uvvoU3KPtBokSPw==} + /turbo-darwin-64/1.10.3: + resolution: {integrity: sha512-IIB9IomJGyD3EdpSscm7Ip1xVWtYb7D0x7oH3vad3gjFcjHJzDz9xZ/iw/qItFEW+wGFcLSRPd+1BNnuLM8AsA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64@1.9.8: - resolution: {integrity: sha512-sLwqOx3XV57QCEoJM9GnDDnnqidG8wf29ytxssBaWHBdeJTjupyrmzTUrX+tyKo3Q+CjWvbPLyqVqxT4g5NuXQ==} + /turbo-darwin-arm64/1.10.3: + resolution: {integrity: sha512-SBNmOZU9YEB0eyNIxeeQ+Wi0Ufd+nprEVp41rgUSRXEIpXjsDjyBnKnF+sQQj3+FLb4yyi/yZQckB+55qXWEsw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64@1.9.8: - resolution: {integrity: sha512-AMg6VT6sW7aOD1uOs5suxglXfTYz9T0uVyKGKokDweGOYTWmuTMGU5afUT1tYRUwQ+kVPJI+83Atl5Ob0oBsgw==} + /turbo-linux-64/1.10.3: + resolution: {integrity: sha512-kvAisGKE7xHJdyMxZLvg53zvHxjqPK1UVj4757PQqtx9dnjYHSc8epmivE6niPgDHon5YqImzArCjVZJYpIGHQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64@1.9.8: - resolution: {integrity: sha512-tLnxFv+OIklwTjiOZ8XMeEeRDAf150Ry4BCivNwgTVFAqQGEqkFP6KGBy56hb5RRF1frPQpoPGipJNVm7c8m1w==} + /turbo-linux-arm64/1.10.3: + resolution: {integrity: sha512-Qgaqln0IYRgyL0SowJOi+PNxejv1I2xhzXOI+D+z4YHbgSx87ox1IsALYBlK8VRVYY8VCXl+PN12r1ioV09j7A==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64@1.9.8: - resolution: {integrity: sha512-r3pCjvXTMR7kq2E3iqwFlN1R7pFO/TOsuUjMhOSPP7HwuuUIinAckU4I9foM3q7ZCQd1XXScBUt3niDyHijAqQ==} + /turbo-windows-64/1.10.3: + resolution: {integrity: sha512-rbH9wManURNN8mBnN/ZdkpUuTvyVVEMiUwFUX4GVE5qmV15iHtZfDLUSGGCP2UFBazHcpNHG1OJzgc55GFFrUw==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64@1.9.8: - resolution: {integrity: sha512-CWzRbX2TM5IfHBC6uWM659qUOEDC4h0nn16ocG8yIq1IF3uZMzKRBHgGOT5m1BHom+R08V0NcjTmPRoqpiI0dg==} + /turbo-windows-arm64/1.10.3: + resolution: {integrity: sha512-ThlkqxhcGZX39CaTjsHqJnqVe+WImjX13pmjnpChz6q5HHbeRxaJSFzgrHIOt0sUUVx90W/WrNRyoIt/aafniw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo@1.9.8: - resolution: {integrity: sha512-dTouGZBm4a2fE0OPafcTQERCp4i3ZOow0Pr0JlOyxKmzJy0JRwXypH013kbZoK6k1ET5tS/g9rwUXIM/AmWXXQ==} + /turbo/1.10.3: + resolution: {integrity: sha512-U4gKCWcKgLcCjQd4Pl8KJdfEKumpyWbzRu75A6FCj6Ctea1PIm58W6Ltw1QXKqHrl2pF9e1raAskf/h6dlrPCA==} hasBin: true requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.9.8 - turbo-darwin-arm64: 1.9.8 - turbo-linux-64: 1.9.8 - turbo-linux-arm64: 1.9.8 - turbo-windows-64: 1.9.8 - turbo-windows-arm64: 1.9.8 + turbo-darwin-64: 1.10.3 + turbo-darwin-arm64: 1.10.3 + turbo-linux-64: 1.10.3 + turbo-linux-arm64: 1.10.3 + turbo-windows-64: 1.10.3 + turbo-windows-arm64: 1.10.3 dev: true - /type-check@0.3.2: + /type-check/0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: true - /type-check@0.4.0: + /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - /type-detect@4.0.8: + /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest@0.13.1: + /type-fest/0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} dev: true - /type-fest@0.20.2: + /type-fest/0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - /type-fest@0.21.3: + /type-fest/0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest@0.6.0: + /type-fest/0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest@0.8.1: + /type-fest/0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /type-fest@1.4.0: + /type-fest/1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} dev: true - /typescript@4.9.3: + /typescript/4.9.3: resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} engines: {node: '>=4.2.0'} hasBin: true + dev: true - /typescript@5.0.4: + /typescript/5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true - /unbox-primitive@1.0.2: + /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -7359,17 +7459,17 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - /universalify@0.1.2: + /universalify/0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify@0.2.0: + /universalify/0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: true - /update-browserslist-db@1.0.10(browserslist@4.21.5): + /update-browserslist-db/1.0.10_browserslist@4.21.5: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -7379,28 +7479,29 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 - /uri-js@4.4.1: + /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - /url-parse@1.5.10: + /url-parse/1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true - /util-deprecate@1.0.2: + /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /v8-compile-cache-lib@3.0.1: + /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - /v8-compile-cache@2.3.0: + /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true - /v8-to-istanbul@9.1.0: + /v8-to-istanbul/9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: @@ -7409,58 +7510,58 @@ packages: convert-source-map: 1.9.0 dev: true - /validate-npm-package-license@3.0.4: + /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: true - /w3c-xmlserializer@4.0.0: + /w3c-xmlserializer/4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 dev: true - /walker@1.0.8: + /walker/1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /wcwidth@1.0.1: + /wcwidth/1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /webidl-conversions@3.0.1: + /webidl-conversions/3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /webidl-conversions@4.0.2: + /webidl-conversions/4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: true - /webidl-conversions@7.0.0: + /webidl-conversions/7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /whatwg-encoding@2.0.0: + /whatwg-encoding/2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype@3.0.0: + /whatwg-mimetype/3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url@11.0.0: + /whatwg-url/11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -7468,14 +7569,14 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url@5.0.0: + /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: true - /whatwg-url@7.1.0: + /whatwg-url/7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: lodash.sortby: 4.7.0 @@ -7483,7 +7584,7 @@ packages: webidl-conversions: 4.0.2 dev: true - /which-boxed-primitive@1.0.2: + /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -7492,7 +7593,7 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 - /which-collection@1.0.1: + /which-collection/1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 @@ -7501,11 +7602,11 @@ packages: is-weakset: 2.0.2 dev: true - /which-module@2.0.0: + /which-module/2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} dev: true - /which-pm@2.0.0: + /which-pm/2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} dependencies: @@ -7513,7 +7614,7 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.9: + /which-typed-array/1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -7525,31 +7626,31 @@ packages: is-typed-array: 1.1.10 dev: true - /which@1.3.1: + /which/1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which@2.0.2: + /which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 - /wide-align@1.1.5: + /wide-align/1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: string-width: 4.2.3 dev: true - /word-wrap@1.2.3: + /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - /wrap-ansi@6.2.0: + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: @@ -7558,7 +7659,7 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi@7.0.0: + /wrap-ansi/7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -7566,10 +7667,10 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 - /wrappy@1.0.2: + /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic@4.0.2: + /write-file-atomic/4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -7577,7 +7678,7 @@ packages: signal-exit: 3.0.7 dev: true - /ws@8.13.0: + /ws/8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -7589,47 +7690,47 @@ packages: utf-8-validate: optional: true - /xml-name-validator@4.0.0: + /xml-name-validator/4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlchars@2.2.0: + /xmlchars/2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xtend@4.0.2: + /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - /y18n@4.0.3: + /y18n/4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} dev: true - /y18n@5.0.8: + /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - /yallist@2.1.2: + /yallist/2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true - /yallist@3.1.1: + /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - /yallist@4.0.0: + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml@1.10.2: + /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - /yaml@2.2.1: + /yaml/2.2.1: resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} engines: {node: '>= 14'} dev: true - /yargs-parser@18.1.3: + /yargs-parser/18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} dependencies: @@ -7637,16 +7738,16 @@ packages: decamelize: 1.2.0 dev: true - /yargs-parser@20.2.9: + /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - /yargs-parser@21.1.1: + /yargs-parser/21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs@15.4.1: + /yargs/15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} dependencies: @@ -7663,7 +7764,7 @@ packages: yargs-parser: 18.1.3 dev: true - /yargs@16.2.0: + /yargs/16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -7676,7 +7777,7 @@ packages: yargs-parser: 20.2.9 dev: false - /yargs@17.7.2: + /yargs/17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: @@ -7689,15 +7790,14 @@ packages: yargs-parser: 21.1.1 dev: true - /yn@3.1.1: + /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - /yocto-queue@0.1.0: + /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: true - /zod@3.21.4: + /zod/3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false From fbbc48e5cd4b6ef16c154ddbaf208d954ecdbbd0 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Fri, 16 Jun 2023 13:57:29 +0200 Subject: [PATCH 06/34] split up register, session for passkeys --- apps/login/app/(login)/passkey/add/page.tsx | 1 + apps/login/app/(login)/register/page.tsx | 38 +++- apps/login/app/(login)/signup/page.tsx | 27 +++ .../login/app/(login)/signup/success/page.tsx | 19 ++ apps/login/app/registeruser/route.ts | 2 +- apps/login/app/session/route.ts | 5 +- apps/login/lib/zitadel.ts | 36 +++- apps/login/ui/AuthenticationMethodRadio.tsx | 105 +++++++++++ apps/login/ui/RegisterFormWithoutPassword.tsx | 173 ++++++++++++++++++ apps/login/ui/RegisterPasskey.tsx | 35 ---- apps/login/ui/SetPasswordForm.tsx | 161 ++++++++++++++++ packages/zitadel-server/src/index.ts | 4 + 12 files changed, 556 insertions(+), 50 deletions(-) create mode 100644 apps/login/app/(login)/signup/page.tsx create mode 100644 apps/login/app/(login)/signup/success/page.tsx create mode 100644 apps/login/ui/AuthenticationMethodRadio.tsx create mode 100644 apps/login/ui/RegisterFormWithoutPassword.tsx create mode 100644 apps/login/ui/SetPasswordForm.tsx diff --git a/apps/login/app/(login)/passkey/add/page.tsx b/apps/login/app/(login)/passkey/add/page.tsx index 4baa9d351da..da17a3ad247 100644 --- a/apps/login/app/(login)/passkey/add/page.tsx +++ b/apps/login/app/(login)/passkey/add/page.tsx @@ -10,6 +10,7 @@ export default async function Page({ searchParams: Record; }) { const { loginName } = searchParams; + const sessionFactors = await loadSession(loginName); async function loadSession(loginName?: string) { diff --git a/apps/login/app/(login)/register/page.tsx b/apps/login/app/(login)/register/page.tsx index 0762ff32249..4690b5527eb 100644 --- a/apps/login/app/(login)/register/page.tsx +++ b/apps/login/app/(login)/register/page.tsx @@ -3,24 +3,50 @@ import { getPasswordComplexitySettings, server, } from "#/lib/zitadel"; -import RegisterForm from "#/ui/RegisterForm"; +import RegisterFormWithoutPassword from "#/ui/RegisterFormWithoutPassword"; +import SetPasswordForm from "#/ui/SetPasswordForm"; + +export default async function Page({ + searchParams, +}: { + searchParams: Record; +}) { + const { firstname, lastname, email } = searchParams; + + const setPassword = !!(firstname && lastname && email); + + console.log(setPassword); -export default async function Page() { const legal = await getLegalAndSupportSettings(server); const passwordComplexitySettings = await getPasswordComplexitySettings( server ); - return ( + console.log(legal); + + return setPassword ? ( +
+

Set Password

+

Set the password for your account

+ + {legal && passwordComplexitySettings && ( + + )} +
+ ) : (

Register

Create your ZITADEL account.

{legal && passwordComplexitySettings && ( - + > )}
); diff --git a/apps/login/app/(login)/signup/page.tsx b/apps/login/app/(login)/signup/page.tsx new file mode 100644 index 00000000000..0762ff32249 --- /dev/null +++ b/apps/login/app/(login)/signup/page.tsx @@ -0,0 +1,27 @@ +import { + getLegalAndSupportSettings, + getPasswordComplexitySettings, + server, +} from "#/lib/zitadel"; +import RegisterForm from "#/ui/RegisterForm"; + +export default async function Page() { + const legal = await getLegalAndSupportSettings(server); + const passwordComplexitySettings = await getPasswordComplexitySettings( + server + ); + + return ( +
+

Register

+

Create your ZITADEL account.

+ + {legal && passwordComplexitySettings && ( + + )} +
+ ); +} diff --git a/apps/login/app/(login)/signup/success/page.tsx b/apps/login/app/(login)/signup/success/page.tsx new file mode 100644 index 00000000000..baa484a004b --- /dev/null +++ b/apps/login/app/(login)/signup/success/page.tsx @@ -0,0 +1,19 @@ +import { Button, ButtonVariants } from "#/ui/Button"; +import Link from "next/link"; + +type Props = { + searchParams: { [key: string]: string | string[] | undefined }; +}; +export default async function Page({ searchParams }: Props) { + return ( +
+

Registration successful

+

You are registered.

+ + {`userId: ${searchParams["userid"]}`} + + + +
+ ); +} diff --git a/apps/login/app/registeruser/route.ts b/apps/login/app/registeruser/route.ts index f0468c709d5..2c9c6d89da4 100644 --- a/apps/login/app/registeruser/route.ts +++ b/apps/login/app/registeruser/route.ts @@ -10,7 +10,7 @@ export async function POST(request: NextRequest) { email: email, firstName, lastName, - password: password, + password: password ? password : undefined, }); return NextResponse.json({ userId }); } else { diff --git a/apps/login/app/session/route.ts b/apps/login/app/session/route.ts index 4f06502a69b..e2808e6ec31 100644 --- a/apps/login/app/session/route.ts +++ b/apps/login/app/session/route.ts @@ -35,7 +35,10 @@ export async function POST(request: NextRequest) { loginName: response.session?.factors?.user?.loginName ?? "", }; return addSessionToCookie(sessionCookie).then(() => { - return NextResponse.json({ factors: response?.session?.factors }); + return NextResponse.json({ + sessionId: createdSession.sessionId, + factors: response?.session?.factors, + }); }); } else { return NextResponse.json( diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index 41cdcd57802..0a282c46499 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -2,6 +2,7 @@ import { ZitadelServer, ZitadelServerOptions, user, + management, settings, getServers, initializeServer, @@ -23,6 +24,8 @@ import { VerifyPasskeyRegistrationRequest, VerifyPasskeyRegistrationResponse, orgMetadata, + SetUserPassword, + SetHumanPasswordResponse, } from "@zitadel/server"; import { Metadata } from "nice-grpc"; @@ -131,7 +134,7 @@ export type AddHumanUserData = { firstName: string; lastName: string; email: string; - password: string; + password: string | undefined; }; export async function addHumanUser( @@ -141,12 +144,18 @@ export async function addHumanUser( const mgmt = user.getUser(server); return mgmt .addHumanUser( - { - email: { email }, - username: email, - profile: { firstName, lastName }, - password: { password }, - }, + password + ? { + email: { email }, + username: email, + profile: { firstName, lastName }, + password: { password }, + } + : { + email: { email }, + username: email, + profile: { firstName, lastName }, + }, {} ) .then((resp: AddHumanUserResponse) => { @@ -154,6 +163,19 @@ export async function addHumanUser( }); } +export async function setHumanPassword( + server: ZitadelServer, + userId: string, + password: string +): Promise { + const mgmt = management.getManagement(server); + return mgmt + .setHumanPassword({ userId, password }, {}) + .then((resp: SetHumanPasswordResponse) => { + return resp.userId; + }); +} + export async function verifyEmail( server: ZitadelServer, userId: string, diff --git a/apps/login/ui/AuthenticationMethodRadio.tsx b/apps/login/ui/AuthenticationMethodRadio.tsx new file mode 100644 index 00000000000..85f93e5e053 --- /dev/null +++ b/apps/login/ui/AuthenticationMethodRadio.tsx @@ -0,0 +1,105 @@ +"use client"; + +import { RadioGroup } from "@headlessui/react"; + +export const methods = [ + { + name: "Passkeys", + description: "Authenticate with your device.", + }, + { + name: "Password", + description: "Authenticate with a password", + }, +]; + +export default function AuthenticationMethodRadio({ + selected, + selectionChanged, +}: { + selected: any; + selectionChanged: (value: any) => void; +}) { + return ( +
+
+ + Server size +
+ {methods.map((method) => ( + + `${ + active + ? "h-full ring-2 ring-opacity-60 ring-primary-light-500 dark:ring-white/20" + : "h-full " + } + ${ + checked + ? "bg-background-light-400 dark:bg-background-dark-400" + : "bg-background-light-400 dark:bg-background-dark-400" + } + relative border boder-divider-light dark:border-divider-dark flex cursor-pointer rounded-lg px-5 py-4 focus:outline-none hover:shadow-md` + } + > + {({ active, checked }) => ( + <> +
+
+
+ + {method.name} + + + {method.description} + {" "} + +
+
+ {checked && ( +
+ +
+ )} +
+ + )} +
+ ))} +
+
+
+
+ ); +} + +function CheckIcon(props: any) { + return ( + + + + + ); +} diff --git a/apps/login/ui/RegisterFormWithoutPassword.tsx b/apps/login/ui/RegisterFormWithoutPassword.tsx new file mode 100644 index 00000000000..55369f8e3a1 --- /dev/null +++ b/apps/login/ui/RegisterFormWithoutPassword.tsx @@ -0,0 +1,173 @@ +"use client"; + +import { LegalAndSupportSettings } from "@zitadel/server"; +import { useState } from "react"; +import { Button, ButtonVariants } from "./Button"; +import { TextInput } from "./Input"; +import { PrivacyPolicyCheckboxes } from "./PrivacyPolicyCheckboxes"; +import { FieldValues, useForm } from "react-hook-form"; +import { useRouter } from "next/navigation"; +import { Spinner } from "./Spinner"; +import AuthenticationMethodRadio, { + methods, +} from "./AuthenticationMethodRadio"; + +type Inputs = + | { + firstname: string; + lastname: string; + email: string; + } + | FieldValues; + +type Props = { + legal: LegalAndSupportSettings; +}; + +export default function RegisterFormWithoutPassword({ legal }: Props) { + const { register, handleSubmit, formState } = useForm({ + mode: "onBlur", + }); + + const [loading, setLoading] = useState(false); + const [selected, setSelected] = useState(methods[0]); + + const router = useRouter(); + + async function submitAndRegister(values: Inputs) { + setLoading(true); + const res = await fetch("/registeruser", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + email: values.email, + firstName: values.firstname, + lastName: values.lastname, + }), + }); + + if (!res.ok) { + setLoading(false); + throw new Error("Failed to register user"); + } + + setLoading(false); + return res.json(); + } + + async function createSessionWithLoginName(loginName: string) { + setLoading(true); + const res = await fetch("/session", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + loginName: loginName, + }), + }); + + setLoading(false); + if (!res.ok) { + throw new Error("Failed to set user"); + } + return res.json(); + } + + async function submitAndContinue( + value: Inputs, + withPassword: boolean = false + ) { + return withPassword + ? router.push(`/register?` + new URLSearchParams(value)) + : submitAndRegister(value).then((resp: any) => { + createSessionWithLoginName(value.email).then(({ factors }) => { + return router.push( + `/passkey/add?` + + new URLSearchParams({ loginName: factors.user.loginName }) + ); + }); + }); + // .then((resp: any) => { + // return router.push(`/verify?userID=${resp.userId}`); + // }); + } + + const { errors } = formState; + + const [tosAndPolicyAccepted, setTosAndPolicyAccepted] = useState(false); + + return ( +
+
+
+ +
+
+ +
+
+ +
+
+ + {legal && ( + + )} + +
+ +
+ +
+ + +
+ + ); +} diff --git a/apps/login/ui/RegisterPasskey.tsx b/apps/login/ui/RegisterPasskey.tsx index 20cd87bd320..a2f95d82dba 100644 --- a/apps/login/ui/RegisterPasskey.tsx +++ b/apps/login/ui/RegisterPasskey.tsx @@ -146,41 +146,6 @@ export default function RegisterPasskey({ sessionId }: Props) { console.log(data); return submitVerify(passkeyId, "name", data, sessionId); - // if (this.type === U2FComponentDestination.MFA) { - // this.service - // .verifyMyMultiFactorU2F(base64, this.name) - // .then(() => { - // this.translate - // .get("USER.MFA.U2F_SUCCESS") - // .pipe(take(1)) - // .subscribe((msg) => { - // this.toast.showInfo(msg); - // }); - // this.dialogRef.close(true); - // this.loading = false; - // }) - // .catch((error) => { - // this.loading = false; - // this.toast.showError(error); - // }); - // } else if (this.type === U2FComponentDestination.PASSWORDLESS) { - // this.service - // .verifyMyPasswordless(base64, this.name) - // .then(() => { - // this.translate - // .get("USER.PASSWORDLESS.U2F_SUCCESS") - // .pipe(take(1)) - // .subscribe((msg) => { - // this.toast.showInfo(msg); - // }); - // this.dialogRef.close(true); - // this.loading = false; - // }) - // .catch((error) => { - // this.loading = false; - // this.toast.showError(error); - // }); - // } } else { setLoading(false); setError("An error on registering passkey"); diff --git a/apps/login/ui/SetPasswordForm.tsx b/apps/login/ui/SetPasswordForm.tsx new file mode 100644 index 00000000000..6dd94c8414a --- /dev/null +++ b/apps/login/ui/SetPasswordForm.tsx @@ -0,0 +1,161 @@ +"use client"; + +import { + LegalAndSupportSettings, + PasswordComplexitySettings, +} from "@zitadel/server"; +import PasswordComplexity from "./PasswordComplexity"; +import { useState } from "react"; +import { Button, ButtonVariants } from "./Button"; +import { TextInput } from "./Input"; +import { PrivacyPolicyCheckboxes } from "./PrivacyPolicyCheckboxes"; +import { FieldValues, useForm } from "react-hook-form"; +import { + lowerCaseValidator, + numberValidator, + symbolValidator, + upperCaseValidator, +} from "#/utils/validators"; +import { useRouter } from "next/navigation"; +import { Spinner } from "./Spinner"; + +type Inputs = + | { + password: string; + confirmPassword: string; + } + | FieldValues; + +type Props = { + passwordComplexitySettings: PasswordComplexitySettings; + email: string; + firstname: string; + lastname: string; +}; + +export default function SetPasswordForm({ + passwordComplexitySettings, + email, + firstname, + lastname, +}: Props) { + const { register, handleSubmit, watch, formState } = useForm({ + mode: "onBlur", + }); + + const [loading, setLoading] = useState(false); + + const router = useRouter(); + + async function submitRegister(values: Inputs) { + setLoading(true); + const res = await fetch("/registeruser", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + email: email, + firstName: firstname, + lastName: lastname, + password: values.password, + }), + }); + + if (!res.ok) { + setLoading(false); + throw new Error("Failed to register user"); + } + + setLoading(false); + return res.json(); + } + + function submitAndLink(value: Inputs): Promise { + return submitRegister(value).then((resp: any) => { + return router.push(`/verify?userID=${resp.userId}`); + }); + } + + const { errors } = formState; + + const watchPassword = watch("password", ""); + const watchConfirmPassword = watch("confirmPassword", ""); + + const [tosAndPolicyAccepted, setTosAndPolicyAccepted] = useState(false); + + const hasMinLength = + passwordComplexitySettings && + watchPassword?.length >= passwordComplexitySettings.minLength; + const hasSymbol = symbolValidator(watchPassword); + const hasNumber = numberValidator(watchPassword); + const hasUppercase = upperCaseValidator(watchPassword); + const hasLowercase = lowerCaseValidator(watchPassword); + + const policyIsValid = + passwordComplexitySettings && + (passwordComplexitySettings.requiresLowercase ? hasLowercase : true) && + (passwordComplexitySettings.requiresNumber ? hasNumber : true) && + (passwordComplexitySettings.requiresUppercase ? hasUppercase : true) && + (passwordComplexitySettings.requiresSymbol ? hasSymbol : true) && + hasMinLength; + + return ( +
+
+
+ +
+
+ +
+
+ + {passwordComplexitySettings && ( + + )} + +
+ + +
+ + ); +} diff --git a/packages/zitadel-server/src/index.ts b/packages/zitadel-server/src/index.ts index d72d275ba98..81a6a8c276b 100644 --- a/packages/zitadel-server/src/index.ts +++ b/packages/zitadel-server/src/index.ts @@ -1,6 +1,7 @@ import * as settings from "./v2/settings"; import * as session from "./v2/session"; import * as user from "./v2/user"; +import * as management from "./management"; import * as login from "./proto/server/zitadel/settings/v2alpha/login_settings"; import * as password from "./proto/server/zitadel/settings/v2alpha/password_settings"; @@ -35,6 +36,8 @@ export { CreatePasskeyRegistrationLinkResponse, CreatePasskeyRegistrationLinkRequest, } from "./proto/server/zitadel/user/v2alpha/user_service"; +export { SetHumanPasswordResponse, SetHumanPasswordRequest} from "./proto/server/zitadel/management"; +export { SetUserPassword } from "./proto/server/zitadel/user/v2alpha/password"; export { type LegalAndSupportSettings } from "./proto/server/zitadel/settings/v2alpha/legal_settings"; export { type PasswordComplexitySettings } from "./proto/server/zitadel/settings/v2alpha/password_settings"; @@ -54,6 +57,7 @@ export { type ZitadelServerOptions, initializeServer, user, + management, session, settings, login, From 3aa8e8fbc49b30e9034f5093a8b7d52612a0630c Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Fri, 16 Jun 2023 15:08:41 +0200 Subject: [PATCH 07/34] create session with password on register --- apps/login/app/(login)/passkey/add/page.tsx | 1 - apps/login/app/session/route.ts | 4 +- apps/login/lib/zitadel.ts | 10 ++++- apps/login/ui/AuthenticationMethodRadio.tsx | 2 +- apps/login/ui/RegisterFormWithoutPassword.tsx | 6 ++- apps/login/ui/SessionsList.tsx | 2 +- apps/login/ui/SetPasswordForm.tsx | 37 +++++++++++++++---- 7 files changed, 47 insertions(+), 15 deletions(-) diff --git a/apps/login/app/(login)/passkey/add/page.tsx b/apps/login/app/(login)/passkey/add/page.tsx index da17a3ad247..8b999cbc6ad 100644 --- a/apps/login/app/(login)/passkey/add/page.tsx +++ b/apps/login/app/(login)/passkey/add/page.tsx @@ -22,7 +22,6 @@ export default async function Page({ }); } - console.log(sessionFactors); return (

Use your passkey to confirm it’s really you

diff --git a/apps/login/app/session/route.ts b/apps/login/app/session/route.ts index e2808e6ec31..4ae026f5283 100644 --- a/apps/login/app/session/route.ts +++ b/apps/login/app/session/route.ts @@ -18,9 +18,9 @@ import { NextRequest, NextResponse } from "next/server"; export async function POST(request: NextRequest) { const body = await request.json(); if (body) { - const { loginName } = body; + const { loginName, password } = body; - const createdSession = await createSession(server, loginName); + const createdSession = await createSession(server, loginName, password); if (createdSession) { return getSession( server, diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index 0a282c46499..c771f8f2968 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -83,10 +83,16 @@ export async function getPasswordComplexitySettings( export async function createSession( server: ZitadelServer, - loginName: string + loginName: string, + password?: string ): Promise { const sessionService = session.getSession(server); - return sessionService.createSession({ checks: { user: { loginName } } }, {}); + return password + ? sessionService.createSession( + { checks: { user: { loginName } }, password: { password } }, + {} + ) + : sessionService.createSession({ checks: { user: { loginName } } }, {}); } export async function setSession( diff --git a/apps/login/ui/AuthenticationMethodRadio.tsx b/apps/login/ui/AuthenticationMethodRadio.tsx index 85f93e5e053..1eb12ce6685 100644 --- a/apps/login/ui/AuthenticationMethodRadio.tsx +++ b/apps/login/ui/AuthenticationMethodRadio.tsx @@ -41,7 +41,7 @@ export default function AuthenticationMethodRadio({ ? "bg-background-light-400 dark:bg-background-dark-400" : "bg-background-light-400 dark:bg-background-dark-400" } - relative border boder-divider-light dark:border-divider-dark flex cursor-pointer rounded-lg px-5 py-4 focus:outline-none hover:shadow-md` + relative border boder-divider-light dark:border-divider-dark flex cursor-pointer rounded-lg px-5 py-4 focus:outline-none hover:shadow-lg dark:hover:bg-white/10` } > {({ active, checked }) => ( diff --git a/apps/login/ui/RegisterFormWithoutPassword.tsx b/apps/login/ui/RegisterFormWithoutPassword.tsx index 55369f8e3a1..c2a443d0a97 100644 --- a/apps/login/ui/RegisterFormWithoutPassword.tsx +++ b/apps/login/ui/RegisterFormWithoutPassword.tsx @@ -141,7 +141,11 @@ export default function RegisterFormWithoutPassword({ legal }: Props) { /> )} -
+

+ Select the method you would like to authenticate +

+ +
(sessions); return sessions ? ( -
+
{list .filter((session) => session?.factors?.user?.loginName) .map((session, index) => { diff --git a/apps/login/ui/SetPasswordForm.tsx b/apps/login/ui/SetPasswordForm.tsx index 6dd94c8414a..def21602686 100644 --- a/apps/login/ui/SetPasswordForm.tsx +++ b/apps/login/ui/SetPasswordForm.tsx @@ -1,14 +1,10 @@ "use client"; -import { - LegalAndSupportSettings, - PasswordComplexitySettings, -} from "@zitadel/server"; +import { PasswordComplexitySettings } from "@zitadel/server"; import PasswordComplexity from "./PasswordComplexity"; import { useState } from "react"; import { Button, ButtonVariants } from "./Button"; import { TextInput } from "./Input"; -import { PrivacyPolicyCheckboxes } from "./PrivacyPolicyCheckboxes"; import { FieldValues, useForm } from "react-hook-form"; import { lowerCaseValidator, @@ -71,9 +67,36 @@ export default function SetPasswordForm({ return res.json(); } + async function createSessionWithLoginNameAndPassword( + loginName: string, + password: string + ) { + setLoading(true); + const res = await fetch("/session", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + loginName: loginName, + password: password, + }), + }); + + setLoading(false); + if (!res.ok) { + throw new Error("Failed to set user"); + } + return res.json(); + } + function submitAndLink(value: Inputs): Promise { - return submitRegister(value).then((resp: any) => { - return router.push(`/verify?userID=${resp.userId}`); + return submitRegister(value).then((humanResponse: any) => { + return createSessionWithLoginNameAndPassword(email, value.password).then( + () => { + return router.push(`/verify?userID=${humanResponse.userId}`); + } + ); }); } From ed7d61266025cdb39af507cf3981f33bd90bd549 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Mon, 19 Jun 2023 15:59:16 +0200 Subject: [PATCH 08/34] rm logs --- apps/login/app/(login)/register/page.tsx | 4 ---- apps/login/app/passkeys/route.ts | 3 +-- apps/login/app/passkeys/verify/route.ts | 20 +++++++++----------- apps/login/lib/zitadel.ts | 11 ----------- apps/login/ui/PasswordForm.tsx | 9 ++++++++- apps/login/ui/RegisterPasskey.tsx | 7 ++----- 6 files changed, 20 insertions(+), 34 deletions(-) diff --git a/apps/login/app/(login)/register/page.tsx b/apps/login/app/(login)/register/page.tsx index 4690b5527eb..9cd32eb07da 100644 --- a/apps/login/app/(login)/register/page.tsx +++ b/apps/login/app/(login)/register/page.tsx @@ -15,15 +15,11 @@ export default async function Page({ const setPassword = !!(firstname && lastname && email); - console.log(setPassword); - const legal = await getLegalAndSupportSettings(server); const passwordComplexitySettings = await getPasswordComplexitySettings( server ); - console.log(legal); - return setPassword ? (

Set Password

diff --git a/apps/login/app/passkeys/route.ts b/apps/login/app/passkeys/route.ts index 6991668dd5d..9bd442c73ca 100644 --- a/apps/login/app/passkeys/route.ts +++ b/apps/login/app/passkeys/route.ts @@ -26,13 +26,12 @@ export async function POST(request: NextRequest) { return createPasskeyRegistrationLink(userId) .then((resp) => { const code = resp.code; - console.log("code", code); return registerPasskey(userId, code).then((resp) => { return NextResponse.json(resp); }); }) .catch((error) => { - console.log("error on creating passkey registration link"); + console.error("error on creating passkey registration link"); return NextResponse.json(error, { status: 500 }); }); } else { diff --git a/apps/login/app/passkeys/verify/route.ts b/apps/login/app/passkeys/verify/route.ts index bda30818fda..1346ecc637d 100644 --- a/apps/login/app/passkeys/verify/route.ts +++ b/apps/login/app/passkeys/verify/route.ts @@ -1,18 +1,18 @@ -import { - createPasskeyRegistrationLink, - getSession, - registerPasskey, - server, - verifyPasskeyRegistration, -} from "#/lib/zitadel"; +import { getSession, server, verifyPasskeyRegistration } from "#/lib/zitadel"; import { getSessionCookieById } from "#/utils/cookies"; -import { NextRequest, NextResponse } from "next/server"; +import { NextRequest, NextResponse, userAgent } from "next/server"; export async function POST(request: NextRequest) { const body = await request.json(); if (body) { - const { passkeyId, passkeyName, publicKeyCredential, sessionId } = body; + let { passkeyId, passkeyName, publicKeyCredential, sessionId } = body; + if (!!!passkeyName) { + const { browser, device, os } = userAgent(request); + passkeyName = `${device.vendor ?? ""} ${device.model ?? ""}${ + device.vendor || device.model ? ", " : "" + }${os.name}${os.name ? ", " : ""}${browser.name}`; + } const sessionCookie = await getSessionCookieById(sessionId); const session = await getSession( @@ -32,11 +32,9 @@ export async function POST(request: NextRequest) { userId ) .then((resp) => { - console.log("verifyresponse", resp); return NextResponse.json(resp); }) .catch((error) => { - console.log("error on verifying passkey"); return NextResponse.json(error, { status: 500 }); }); } else { diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index c771f8f2968..5ba226d80d4 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -254,7 +254,6 @@ export async function verifyPasskeyRegistration( userId: string ): Promise { const userservice = user.getUser(server); - console.log(passkeyId, passkeyName, publicKeyCredential, userId); return userservice.verifyPasskeyRegistration( { passkeyId, @@ -276,20 +275,10 @@ export async function registerPasskey( userId: string, code: { id: string; code: string } ): Promise { - // this actions will be made from the currently seleected user - const zitadelConfig: ZitadelServerOptions = { - name: "zitadel login", - apiUrl: process.env.ZITADEL_API_URL ?? "", - token: "", - }; - - const authserver: ZitadelServer = initializeServer(zitadelConfig); - console.log("server", authserver); const userservice = user.getUser(server); return userservice.registerPasskey({ userId, code, - // returnCode: new ReturnPasskeyRegistrationCode(), }); } diff --git a/apps/login/ui/PasswordForm.tsx b/apps/login/ui/PasswordForm.tsx index f28ce0772a1..eb432769034 100644 --- a/apps/login/ui/PasswordForm.tsx +++ b/apps/login/ui/PasswordForm.tsx @@ -52,7 +52,14 @@ export default function PasswordForm({ loginName }: Props) { function submitPasswordAndContinue(value: Inputs): Promise { return submitPassword(value).then((resp: any) => { - return router.push(`/accounts`); + if (resp.factors && !resp.factors.passwordless) { + return router.push( + `/passkey/add?` + + new URLSearchParams({ loginName: resp.factors.user.loginName }) + ); + } else { + return router.push(`/accounts`); + } }); } diff --git a/apps/login/ui/RegisterPasskey.tsx b/apps/login/ui/RegisterPasskey.tsx index a2f95d82dba..efff2594d22 100644 --- a/apps/login/ui/RegisterPasskey.tsx +++ b/apps/login/ui/RegisterPasskey.tsx @@ -26,8 +26,6 @@ export default function RegisterPasskey({ sessionId }: Props) { const router = useRouter(); async function submitRegister() { - // const link = await createPasskeyRegistrationLink(server, userId); - // console.log(link); setError(""); setLoading(true); const res = await fetch("/passkeys", { @@ -83,7 +81,7 @@ export default function RegisterPasskey({ sessionId }: Props) { function submitRegisterAndContinue(value: Inputs): Promise { return submitRegister().then((resp: RegisterPasskeyResponse) => { const passkeyId = resp.passkeyId; - console.log("passkeyId", passkeyId); + if ( resp.publicKeyCredentialCreationOptions && resp.publicKeyCredentialCreationOptions.publicKey @@ -131,7 +129,6 @@ export default function RegisterPasskey({ sessionId }: Props) { id: resp.id, rawId: coerceToBase64Url(rawId, "rawId"), type: resp.type, - // response: (resp as any).response, response: { attestationObject: coerceToBase64Url( attestationObject, @@ -145,7 +142,7 @@ export default function RegisterPasskey({ sessionId }: Props) { }; console.log(data); - return submitVerify(passkeyId, "name", data, sessionId); + return submitVerify(passkeyId, "", data, sessionId); } else { setLoading(false); setError("An error on registering passkey"); From f8bbfb3d572252e468a8b4dcde69e8cff2fa44e2 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Mon, 19 Jun 2023 16:28:29 +0200 Subject: [PATCH 09/34] passwordless prompt page --- apps/login/app/(login)/accounts/page.tsx | 1 + apps/login/app/(login)/passkey/add/page.tsx | 18 ++++++++----- apps/login/ui/PasswordForm.tsx | 5 +++- apps/login/ui/RegisterPasskey.tsx | 28 +++++++++++++++------ 4 files changed, 37 insertions(+), 15 deletions(-) diff --git a/apps/login/app/(login)/accounts/page.tsx b/apps/login/app/(login)/accounts/page.tsx index b3b0631e162..dae5d45d86e 100644 --- a/apps/login/app/(login)/accounts/page.tsx +++ b/apps/login/app/(login)/accounts/page.tsx @@ -22,6 +22,7 @@ async function loadSessions(): Promise { export default async function Page() { let sessions = await loadSessions(); + console.log(sessions); return (
diff --git a/apps/login/app/(login)/passkey/add/page.tsx b/apps/login/app/(login)/passkey/add/page.tsx index 8b999cbc6ad..82172580912 100644 --- a/apps/login/app/(login)/passkey/add/page.tsx +++ b/apps/login/app/(login)/passkey/add/page.tsx @@ -9,7 +9,7 @@ export default async function Page({ }: { searchParams: Record; }) { - const { loginName } = searchParams; + const { loginName, prompt } = searchParams; const sessionFactors = await loadSession(loginName); @@ -21,10 +21,16 @@ export default async function Page({ } }); } + const title = !!prompt + ? "Authenticate with a passkey" + : "Use your passkey to confirm it’s really you"; + const description = !!prompt + ? "When set up, you will be able to authenticate without a password." + : "Your device will ask for your fingerprint, face, or screen lock"; return (
-

Use your passkey to confirm it’s really you

+

{title}

{sessionFactors && ( )} -

- Your device will ask for your fingerprint, face, or screen lock -

+

{description}

@@ -60,7 +64,9 @@ export default async function Page({
)} - {sessionFactors?.id && } + {sessionFactors?.id && ( + + )}
); } diff --git a/apps/login/ui/PasswordForm.tsx b/apps/login/ui/PasswordForm.tsx index eb432769034..8a1d1f2f1f7 100644 --- a/apps/login/ui/PasswordForm.tsx +++ b/apps/login/ui/PasswordForm.tsx @@ -55,7 +55,10 @@ export default function PasswordForm({ loginName }: Props) { if (resp.factors && !resp.factors.passwordless) { return router.push( `/passkey/add?` + - new URLSearchParams({ loginName: resp.factors.user.loginName }) + new URLSearchParams({ + loginName: resp.factors.user.loginName, + prompt: "true", + }) ); } else { return router.push(`/accounts`); diff --git a/apps/login/ui/RegisterPasskey.tsx b/apps/login/ui/RegisterPasskey.tsx index efff2594d22..9a4fbb2ec52 100644 --- a/apps/login/ui/RegisterPasskey.tsx +++ b/apps/login/ui/RegisterPasskey.tsx @@ -12,9 +12,10 @@ type Inputs = {}; type Props = { sessionId: string; + isPrompt: boolean; }; -export default function RegisterPasskey({ sessionId }: Props) { +export default function RegisterPasskey({ sessionId, isPrompt }: Props) { const { register, handleSubmit, formState } = useForm({ mode: "onBlur", }); @@ -172,13 +173,24 @@ export default function RegisterPasskey({ sessionId }: Props) { )}
- + {isPrompt ? ( + + ) : ( + + )} + - -
- ); -} diff --git a/apps/login/app/(login)/signup/success/page.tsx b/apps/login/app/(login)/signup/success/page.tsx deleted file mode 100644 index baa484a004b..00000000000 --- a/apps/login/app/(login)/signup/success/page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Button, ButtonVariants } from "#/ui/Button"; -import Link from "next/link"; - -type Props = { - searchParams: { [key: string]: string | string[] | undefined }; -}; -export default async function Page({ searchParams }: Props) { - return ( -
-

Registration successful

-

You are registered.

- - {`userId: ${searchParams["userid"]}`} - - - -
- ); -} From 4e1d8fb5652f2fd030f835bb45a4c9dab96e06a3 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 21 Jun 2023 15:13:17 +0200 Subject: [PATCH 24/34] remove redundant code,unused imports --- .../app/(login)/password/change/page.tsx | 35 ----- apps/login/app/(login)/password/set/page.tsx | 133 ------------------ apps/login/lib/demos.ts | 25 ---- apps/login/lib/zitadel.ts | 2 - apps/login/ui/Info.tsx | 14 -- 5 files changed, 209 deletions(-) delete mode 100644 apps/login/app/(login)/password/change/page.tsx delete mode 100644 apps/login/app/(login)/password/set/page.tsx delete mode 100644 apps/login/ui/Info.tsx diff --git a/apps/login/app/(login)/password/change/page.tsx b/apps/login/app/(login)/password/change/page.tsx deleted file mode 100644 index c0ce2fa4d8d..00000000000 --- a/apps/login/app/(login)/password/change/page.tsx +++ /dev/null @@ -1,35 +0,0 @@ -"use client"; -import { Button, ButtonVariants } from "#/ui/Button"; -import { TextInput } from "#/ui/Input"; -import UserAvatar from "#/ui/UserAvatar"; -import { useRouter } from "next/navigation"; - -export default function Page() { - const router = useRouter(); - - return ( -
-

Password

-

Enter your password.

- - - -
- -
-
- - -
-
- ); -} diff --git a/apps/login/app/(login)/password/set/page.tsx b/apps/login/app/(login)/password/set/page.tsx deleted file mode 100644 index 35714ec8bf5..00000000000 --- a/apps/login/app/(login)/password/set/page.tsx +++ /dev/null @@ -1,133 +0,0 @@ -"use client"; - -import { TextInput } from "#/ui/Input"; -import { useState } from "react"; -import { useForm } from "react-hook-form"; -import { ClientError } from "nice-grpc"; - -type Props = { - userId?: string; - isMe?: boolean; - userState?: any; // UserState; -}; - -export default function Page() { - const [passwordLoading, setPasswordLoading] = useState(false); - const [policyValid, setPolicyValid] = useState(false); - - type Inputs = { - password?: string; - newPassword: string; - confirmPassword: string; - }; - - const { register, handleSubmit, watch, reset, formState } = useForm({ - mode: "onChange", - reValidateMode: "onChange", - shouldUseNativeValidation: true, - }); - - const { errors, isValid } = formState; - - const watchNewPassword = watch("newPassword", ""); - const watchConfirmPassword = watch("confirmPassword", ""); - - async function updatePassword(value: Inputs) { - setPasswordLoading(true); - - // const authData: UpdateMyPasswordRequest = { - // oldPassword: value.password ?? '', - // newPassword: value.newPassword, - // }; - - const response = await fetch( - `/api/user/password/me` + - `?${new URLSearchParams({ - resend: `false`, - })}`, - { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({}), - } - ); - - if (response.ok) { - setPasswordLoading(false); - // toast('password.set'); - // TODO: success info - reset(); - } else { - const error = (await response.json()) as ClientError; - // toast.error(error.details); - // TODO: show error - } - setPasswordLoading(false); - } - - async function sendHumanResetPasswordNotification(userId: string) { - // const mgmtData: SendHumanResetPasswordNotificationRequest = { - // type: SendHumanResetPasswordNotificationRequest_Type.TYPE_EMAIL, - // userId: userId, - // }; - - const response = await fetch(`/api/user/password/resetlink/${userId}`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({}), - }); - - if (response.ok) { - // TODO: success info - // toast(t('sendPasswordResetLinkSent')); - } else { - const error = await response.json(); - // TODO: show error - // toast.error((error as ClientError).details); - } - } - - return ( - <> -

Set Password

-

- Enter your new Password according to the requirements listed. -

-
-
- -
-
- -
-
- -
-
- - ); -} diff --git a/apps/login/lib/demos.ts b/apps/login/lib/demos.ts index a1b7e288285..7d8e5f2c937 100644 --- a/apps/login/lib/demos.ts +++ b/apps/login/lib/demos.ts @@ -23,31 +23,6 @@ export const demos: { name: string; items: Item[] }[] = [ slug: "accounts", description: "List active and inactive sessions", }, - // { - // name: "Set Password", - // slug: "password/set", - // description: "The page to set a users password", - // }, - // { - // name: "MFA", - // slug: "mfa", - // description: "The page to request a users mfa method", - // }, - // { - // name: "MFA Set", - // slug: "mfa/set", - // description: "The page to set a users mfa method", - // }, - // { - // name: "MFA Create", - // slug: "mfa/create", - // description: "The page to create a users mfa method", - // }, - // { - // name: "Passwordless", - // slug: "passwordless", - // description: "The page to login a user with his passwordless device", - // }, { name: "Passkey Registration", slug: "passkey/add", diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index a86833dce5d..afe72254659 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -2,7 +2,6 @@ import { ZitadelServer, ZitadelServerOptions, user, - management, settings, getServers, initializeServer, @@ -199,7 +198,6 @@ export async function setEmail( ); } - /** * * @param server diff --git a/apps/login/ui/Info.tsx b/apps/login/ui/Info.tsx deleted file mode 100644 index 59392e8c7c5..00000000000 --- a/apps/login/ui/Info.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { ExclamationTriangleIcon } from "@heroicons/react/24/outline"; - -type Props = { - children: React.ReactNode; -}; - -export default function Alert({ children }: Props) { - return ( -
- - {children} -
- ); -} From bf474f49b76f0fb1c3adfa63484c227625feb367 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 21 Jun 2023 15:23:23 +0200 Subject: [PATCH 25/34] rm unused import --- apps/login/lib/zitadel.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index afe72254659..6190634bf46 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -22,7 +22,6 @@ import { DeleteSessionResponse, VerifyPasskeyRegistrationResponse, } from "@zitadel/server"; -import { Metadata } from "nice-grpc"; export const zitadelConfig: ZitadelServerOptions = { name: "zitadel login", From f2ced63fba25d09fa555bbb9cf3fbfd5a36e7d1f Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 21 Jun 2023 15:28:04 +0200 Subject: [PATCH 26/34] rm export --- packages/zitadel-server/src/index.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/zitadel-server/src/index.ts b/packages/zitadel-server/src/index.ts index 81a6a8c276b..ba0fbb49c9c 100644 --- a/packages/zitadel-server/src/index.ts +++ b/packages/zitadel-server/src/index.ts @@ -36,9 +36,10 @@ export { CreatePasskeyRegistrationLinkResponse, CreatePasskeyRegistrationLinkRequest, } from "./proto/server/zitadel/user/v2alpha/user_service"; -export { SetHumanPasswordResponse, SetHumanPasswordRequest} from "./proto/server/zitadel/management"; -export { SetUserPassword } from "./proto/server/zitadel/user/v2alpha/password"; - +export { + SetHumanPasswordResponse, + SetHumanPasswordRequest, +} from "./proto/server/zitadel/management"; export { type LegalAndSupportSettings } from "./proto/server/zitadel/settings/v2alpha/legal_settings"; export { type PasswordComplexitySettings } from "./proto/server/zitadel/settings/v2alpha/password_settings"; export { type ResourceOwnerType } from "./proto/server/zitadel/settings/v2alpha/settings"; From 7cbc4677f0ae9ec284c334c13ebe11904ffa3467 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 22 Jun 2023 16:54:55 +0200 Subject: [PATCH 27/34] login with passkey --- apps/login/app/(login)/passkey/login/page.tsx | 58 ++++++ apps/login/ui/LoginPasskey.tsx | 185 ++++++++++++++++++ 2 files changed, 243 insertions(+) create mode 100644 apps/login/app/(login)/passkey/login/page.tsx create mode 100644 apps/login/ui/LoginPasskey.tsx diff --git a/apps/login/app/(login)/passkey/login/page.tsx b/apps/login/app/(login)/passkey/login/page.tsx new file mode 100644 index 00000000000..6a7124c720f --- /dev/null +++ b/apps/login/app/(login)/passkey/login/page.tsx @@ -0,0 +1,58 @@ +import { getSession, server } from "#/lib/zitadel"; +import Alert, { AlertType } from "#/ui/Alert"; +import RegisterPasskey from "#/ui/RegisterPasskey"; +import UserAvatar from "#/ui/UserAvatar"; +import { getMostRecentCookieWithLoginname } from "#/utils/cookies"; + +export default async function Page({ + searchParams, +}: { + searchParams: Record; +}) { + const { loginName, prompt } = searchParams; + + const sessionFactors = await loadSession(loginName); + + async function loadSession(loginName?: string) { + const recent = await getMostRecentCookieWithLoginname(loginName); + return getSession(server, recent.id, recent.token).then((response) => { + if (response?.session) { + return response.session; + } + }); + } + const title = !!prompt + ? "Authenticate with a passkey" + : "Use your passkey to confirm it's really you"; + const description = !!prompt + ? "When set up, you will be able to authenticate without a password." + : "Your device will ask for your fingerprint, face, or screen lock"; + + return ( +
+

{title}

+ + {sessionFactors && ( + + )} +

{description}

+ + {!sessionFactors && ( +
+ + Could not get the context of the user. Make sure to enter the + username first or provide a loginName as searchParam. + +
+ )} + + {sessionFactors?.id && ( + + )} +
+ ); +} diff --git a/apps/login/ui/LoginPasskey.tsx b/apps/login/ui/LoginPasskey.tsx new file mode 100644 index 00000000000..c0e2b31e6a2 --- /dev/null +++ b/apps/login/ui/LoginPasskey.tsx @@ -0,0 +1,185 @@ +"use client"; + +import { useState } from "react"; +import { Button, ButtonVariants } from "./Button"; +import { useForm } from "react-hook-form"; +import { useRouter } from "next/navigation"; +import { Spinner } from "./Spinner"; +import Alert from "./Alert"; +import { RegisterPasskeyResponse } from "@zitadel/server"; +import { coerceToArrayBuffer, coerceToBase64Url } from "#/utils/base64"; +type Inputs = {}; + +type Props = { + sessionId: string; +}; + +export default function LoginPasskey({ sessionId }: Props) { + const { login, handleSubmit, formState } = useForm({ + mode: "onBlur", + }); + + const [error, setError] = useState(""); + + const [loading, setLoading] = useState(false); + + const router = useRouter(); + + async function submitLogin( + passkeyId: string, + passkeyName: string, + publicKeyCredential: any, + sessionId: string + ) { + setLoading(true); + const res = await fetch("/passkeys/verify", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + passkeyId, + passkeyName, + publicKeyCredential, + sessionId, + }), + }); + + const response = await res.json(); + + setLoading(false); + if (!res.ok) { + setError(response.details); + return Promise.reject(response.details); + } + return response; + } + + function submitLoginAndContinue(value: Inputs): Promise { + return submitLogin().then((resp: LoginPasskeyResponse) => { + const passkeyId = resp.passkeyId; + + if ( + resp.publicKeyCredentialCreationOptions && + resp.publicKeyCredentialCreationOptions.publicKey + ) { + resp.publicKeyCredentialCreationOptions.publicKey.challenge = + coerceToArrayBuffer( + resp.publicKeyCredentialCreationOptions.publicKey.challenge, + "challenge" + ); + resp.publicKeyCredentialCreationOptions.publicKey.user.id = + coerceToArrayBuffer( + resp.publicKeyCredentialCreationOptions.publicKey.user.id, + "challenge" + ); + if ( + resp.publicKeyCredentialCreationOptions.publicKey.excludeCredentials + ) { + resp.publicKeyCredentialCreationOptions.publicKey.excludeCredentials.map( + (cred: any) => { + cred.id = coerceToArrayBuffer( + cred.id as string, + "excludeCredentials.id" + ); + return cred; + } + ); + } + + navigator.credentials + .get({ + publicKey: resp.publicKeyCredentialCreationOptions, + }) + .then((assertedCredential: any) => { + if (assertedCredential) { + let authData = new Uint8Array( + assertedCredential.response.authenticatorData + ); + let clientDataJSON = new Uint8Array( + assertedCredential.response.clientDataJSON + ); + let rawId = new Uint8Array(assertedCredential.rawId); + let sig = new Uint8Array(assertedCredential.response.signature); + let userHandle = new Uint8Array( + assertedCredential.response.userHandle + ); + + let data = JSON.stringify({ + id: assertedCredential.id, + rawId: coerceToBase64Url(rawId, "rawId"), + type: assertedCredential.type, + response: { + authenticatorData: coerceToBase64Url(authData, "authData"), + clientDataJSON: coerceToBase64Url( + clientDataJSON, + "clientDataJSON" + ), + signature: coerceToBase64Url(sig, "sig"), + userHandle: coerceToBase64Url(userHandle, "userHandle"), + }, + }); + + return submitVerify(passkeyId, "", data, sessionId); + } else { + setLoading(false); + setError("An error on retrieving passkey"); + return null; + } + }) + .catch((error) => { + console.error(error); + setLoading(false); + // setError(error); + + return null; + }); + } + // return router.push(`/accounts`); + }); + } + + const { errors } = formState; + + return ( +
+ {error && ( +
+ {error} +
+ )} + +
+ {isPrompt ? ( + + ) : ( + + )} + + + +
+
+ ); +} From f334f0fb3b5f510d23cef1ea98aabfc65088ec17 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Tue, 27 Jun 2023 13:44:11 +0200 Subject: [PATCH 28/34] login component --- apps/login/app/(login)/passkey/login/page.tsx | 5 +- apps/login/ui/LoginPasskey.tsx | 124 +++++++----------- 2 files changed, 48 insertions(+), 81 deletions(-) diff --git a/apps/login/app/(login)/passkey/login/page.tsx b/apps/login/app/(login)/passkey/login/page.tsx index 6a7124c720f..a48578e6596 100644 --- a/apps/login/app/(login)/passkey/login/page.tsx +++ b/apps/login/app/(login)/passkey/login/page.tsx @@ -1,5 +1,6 @@ import { getSession, server } from "#/lib/zitadel"; import Alert, { AlertType } from "#/ui/Alert"; +import LoginPasskey from "#/ui/LoginPasskey"; import RegisterPasskey from "#/ui/RegisterPasskey"; import UserAvatar from "#/ui/UserAvatar"; import { getMostRecentCookieWithLoginname } from "#/utils/cookies"; @@ -50,9 +51,7 @@ export default async function Page({
)} - {sessionFactors?.id && ( - - )} + {sessionFactors?.id && }
); } diff --git a/apps/login/ui/LoginPasskey.tsx b/apps/login/ui/LoginPasskey.tsx index c0e2b31e6a2..3b067038eb9 100644 --- a/apps/login/ui/LoginPasskey.tsx +++ b/apps/login/ui/LoginPasskey.tsx @@ -56,87 +56,55 @@ export default function LoginPasskey({ sessionId }: Props) { } function submitLoginAndContinue(value: Inputs): Promise { - return submitLogin().then((resp: LoginPasskeyResponse) => { - const passkeyId = resp.passkeyId; + navigator.credentials + .get({ + publicKey: resp.publicKeyCredentialCreationOptions, + }) + .then((assertedCredential: any) => { + if (assertedCredential) { + let authData = new Uint8Array( + assertedCredential.response.authenticatorData + ); + let clientDataJSON = new Uint8Array( + assertedCredential.response.clientDataJSON + ); + let rawId = new Uint8Array(assertedCredential.rawId); + let sig = new Uint8Array(assertedCredential.response.signature); + let userHandle = new Uint8Array( + assertedCredential.response.userHandle + ); - if ( - resp.publicKeyCredentialCreationOptions && - resp.publicKeyCredentialCreationOptions.publicKey - ) { - resp.publicKeyCredentialCreationOptions.publicKey.challenge = - coerceToArrayBuffer( - resp.publicKeyCredentialCreationOptions.publicKey.challenge, - "challenge" - ); - resp.publicKeyCredentialCreationOptions.publicKey.user.id = - coerceToArrayBuffer( - resp.publicKeyCredentialCreationOptions.publicKey.user.id, - "challenge" - ); - if ( - resp.publicKeyCredentialCreationOptions.publicKey.excludeCredentials - ) { - resp.publicKeyCredentialCreationOptions.publicKey.excludeCredentials.map( - (cred: any) => { - cred.id = coerceToArrayBuffer( - cred.id as string, - "excludeCredentials.id" - ); - return cred; - } - ); - } + let data = JSON.stringify({ + id: assertedCredential.id, + rawId: coerceToBase64Url(rawId, "rawId"), + type: assertedCredential.type, + response: { + authenticatorData: coerceToBase64Url(authData, "authData"), + clientDataJSON: coerceToBase64Url( + clientDataJSON, + "clientDataJSON" + ), + signature: coerceToBase64Url(sig, "sig"), + userHandle: coerceToBase64Url(userHandle, "userHandle"), + }, + }); - navigator.credentials - .get({ - publicKey: resp.publicKeyCredentialCreationOptions, - }) - .then((assertedCredential: any) => { - if (assertedCredential) { - let authData = new Uint8Array( - assertedCredential.response.authenticatorData - ); - let clientDataJSON = new Uint8Array( - assertedCredential.response.clientDataJSON - ); - let rawId = new Uint8Array(assertedCredential.rawId); - let sig = new Uint8Array(assertedCredential.response.signature); - let userHandle = new Uint8Array( - assertedCredential.response.userHandle - ); - - let data = JSON.stringify({ - id: assertedCredential.id, - rawId: coerceToBase64Url(rawId, "rawId"), - type: assertedCredential.type, - response: { - authenticatorData: coerceToBase64Url(authData, "authData"), - clientDataJSON: coerceToBase64Url( - clientDataJSON, - "clientDataJSON" - ), - signature: coerceToBase64Url(sig, "sig"), - userHandle: coerceToBase64Url(userHandle, "userHandle"), - }, - }); - - return submitVerify(passkeyId, "", data, sessionId); - } else { - setLoading(false); - setError("An error on retrieving passkey"); - return null; - } - }) - .catch((error) => { - console.error(error); + return submitLogin(passkeyId, "", data, sessionId); + } else { setLoading(false); - // setError(error); - + setError("An error on retrieving passkey"); return null; - }); - } - // return router.push(`/accounts`); - }); + } + }) + .catch((error) => { + console.error(error); + setLoading(false); + // setError(error); + + return null; + }); + } + // return router.push(`/accounts`); } const { errors } = formState; @@ -174,7 +142,7 @@ export default function LoginPasskey({ sessionId }: Props) { className="self-end" variant={ButtonVariants.Primary} disabled={loading || !formState.isValid} - onClick={handleSubmit(submitRegisterAndContinue)} + onClick={handleSubmit(submitLoginAndContinue)} > {loading && } continue From 6fcb1ae8e8c46e71e6d71b6c057c5018e5b73f8e Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Tue, 27 Jun 2023 18:08:22 +0200 Subject: [PATCH 29/34] fix register --- apps/login/app/passkeys/route.ts | 4 +++- apps/login/app/session/route.ts | 10 +++++++++- apps/login/lib/zitadel.ts | 11 ++++++++--- apps/login/ui/RegisterPasskey.tsx | 6 ++++-- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/apps/login/app/passkeys/route.ts b/apps/login/app/passkeys/route.ts index 9bd442c73ca..3cbd4b71bcd 100644 --- a/apps/login/app/passkeys/route.ts +++ b/apps/login/app/passkeys/route.ts @@ -20,13 +20,15 @@ export async function POST(request: NextRequest) { sessionCookie.token ); + const domain: string = request.nextUrl.hostname; + const userId = session?.session?.factors?.user?.id; if (userId) { return createPasskeyRegistrationLink(userId) .then((resp) => { const code = resp.code; - return registerPasskey(userId, code).then((resp) => { + return registerPasskey(userId, code, domain).then((resp) => { return NextResponse.json(resp); }); }) diff --git a/apps/login/app/session/route.ts b/apps/login/app/session/route.ts index c143bb66b8b..f27d80660de 100644 --- a/apps/login/app/session/route.ts +++ b/apps/login/app/session/route.ts @@ -20,7 +20,15 @@ export async function POST(request: NextRequest) { if (body) { const { loginName, password } = body; - const createdSession = await createSession(server, loginName, password); + const domain: string = request.nextUrl.hostname; + + const createdSession = await createSession( + server, + loginName, + password, + domain + ); + if (createdSession) { return getSession( server, diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index 6190634bf46..9322a97e12b 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -78,12 +78,13 @@ export async function getPasswordComplexitySettings( export async function createSession( server: ZitadelServer, loginName: string, - password: string | undefined + password: string | undefined, + domain: string ): Promise { const sessionService = session.getSession(server); return password ? sessionService.createSession( - { checks: { user: { loginName }, password: { password } } }, + { checks: { user: { loginName }, password: { password } }, domain }, {} ) : sessionService.createSession({ checks: { user: { loginName } } }, {}); @@ -236,6 +237,7 @@ export async function verifyPasskeyRegistration( { passkeyId, passkeyName, + publicKeyCredential, userId, }, @@ -251,12 +253,15 @@ export async function verifyPasskeyRegistration( */ export async function registerPasskey( userId: string, - code: { id: string; code: string } + code: { id: string; code: string }, + domain: string ): Promise { const userservice = user.getUser(server); return userservice.registerPasskey({ userId, code, + domain, + // authenticator: }); } diff --git a/apps/login/ui/RegisterPasskey.tsx b/apps/login/ui/RegisterPasskey.tsx index f5d0cb53830..800a57879e9 100644 --- a/apps/login/ui/RegisterPasskey.tsx +++ b/apps/login/ui/RegisterPasskey.tsx @@ -95,7 +95,7 @@ export default function RegisterPasskey({ sessionId, isPrompt }: Props) { resp.publicKeyCredentialCreationOptions.publicKey.user.id = coerceToArrayBuffer( resp.publicKeyCredentialCreationOptions.publicKey.user.id, - "challenge" + "userid" ); if ( resp.publicKeyCredentialCreationOptions.publicKey.excludeCredentials @@ -140,7 +140,9 @@ export default function RegisterPasskey({ sessionId, isPrompt }: Props) { ), }, }; - return submitVerify(passkeyId, "", data, sessionId); + return submitVerify(passkeyId, "", data, sessionId).then(() => { + router.push("/accounts"); + }); } else { setLoading(false); setError("An error on registering passkey"); From 912958e7067b466a193ff7320d72e7307a71afff Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Wed, 28 Jun 2023 11:32:01 +0200 Subject: [PATCH 30/34] rm login part --- apps/login/app/(login)/passkey/login/page.tsx | 57 ------- apps/login/ui/LoginPasskey.tsx | 153 ------------------ 2 files changed, 210 deletions(-) delete mode 100644 apps/login/app/(login)/passkey/login/page.tsx delete mode 100644 apps/login/ui/LoginPasskey.tsx diff --git a/apps/login/app/(login)/passkey/login/page.tsx b/apps/login/app/(login)/passkey/login/page.tsx deleted file mode 100644 index a48578e6596..00000000000 --- a/apps/login/app/(login)/passkey/login/page.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { getSession, server } from "#/lib/zitadel"; -import Alert, { AlertType } from "#/ui/Alert"; -import LoginPasskey from "#/ui/LoginPasskey"; -import RegisterPasskey from "#/ui/RegisterPasskey"; -import UserAvatar from "#/ui/UserAvatar"; -import { getMostRecentCookieWithLoginname } from "#/utils/cookies"; - -export default async function Page({ - searchParams, -}: { - searchParams: Record; -}) { - const { loginName, prompt } = searchParams; - - const sessionFactors = await loadSession(loginName); - - async function loadSession(loginName?: string) { - const recent = await getMostRecentCookieWithLoginname(loginName); - return getSession(server, recent.id, recent.token).then((response) => { - if (response?.session) { - return response.session; - } - }); - } - const title = !!prompt - ? "Authenticate with a passkey" - : "Use your passkey to confirm it's really you"; - const description = !!prompt - ? "When set up, you will be able to authenticate without a password." - : "Your device will ask for your fingerprint, face, or screen lock"; - - return ( -
-

{title}

- - {sessionFactors && ( - - )} -

{description}

- - {!sessionFactors && ( -
- - Could not get the context of the user. Make sure to enter the - username first or provide a loginName as searchParam. - -
- )} - - {sessionFactors?.id && } -
- ); -} diff --git a/apps/login/ui/LoginPasskey.tsx b/apps/login/ui/LoginPasskey.tsx deleted file mode 100644 index 3b067038eb9..00000000000 --- a/apps/login/ui/LoginPasskey.tsx +++ /dev/null @@ -1,153 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { Button, ButtonVariants } from "./Button"; -import { useForm } from "react-hook-form"; -import { useRouter } from "next/navigation"; -import { Spinner } from "./Spinner"; -import Alert from "./Alert"; -import { RegisterPasskeyResponse } from "@zitadel/server"; -import { coerceToArrayBuffer, coerceToBase64Url } from "#/utils/base64"; -type Inputs = {}; - -type Props = { - sessionId: string; -}; - -export default function LoginPasskey({ sessionId }: Props) { - const { login, handleSubmit, formState } = useForm({ - mode: "onBlur", - }); - - const [error, setError] = useState(""); - - const [loading, setLoading] = useState(false); - - const router = useRouter(); - - async function submitLogin( - passkeyId: string, - passkeyName: string, - publicKeyCredential: any, - sessionId: string - ) { - setLoading(true); - const res = await fetch("/passkeys/verify", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - passkeyId, - passkeyName, - publicKeyCredential, - sessionId, - }), - }); - - const response = await res.json(); - - setLoading(false); - if (!res.ok) { - setError(response.details); - return Promise.reject(response.details); - } - return response; - } - - function submitLoginAndContinue(value: Inputs): Promise { - navigator.credentials - .get({ - publicKey: resp.publicKeyCredentialCreationOptions, - }) - .then((assertedCredential: any) => { - if (assertedCredential) { - let authData = new Uint8Array( - assertedCredential.response.authenticatorData - ); - let clientDataJSON = new Uint8Array( - assertedCredential.response.clientDataJSON - ); - let rawId = new Uint8Array(assertedCredential.rawId); - let sig = new Uint8Array(assertedCredential.response.signature); - let userHandle = new Uint8Array( - assertedCredential.response.userHandle - ); - - let data = JSON.stringify({ - id: assertedCredential.id, - rawId: coerceToBase64Url(rawId, "rawId"), - type: assertedCredential.type, - response: { - authenticatorData: coerceToBase64Url(authData, "authData"), - clientDataJSON: coerceToBase64Url( - clientDataJSON, - "clientDataJSON" - ), - signature: coerceToBase64Url(sig, "sig"), - userHandle: coerceToBase64Url(userHandle, "userHandle"), - }, - }); - - return submitLogin(passkeyId, "", data, sessionId); - } else { - setLoading(false); - setError("An error on retrieving passkey"); - return null; - } - }) - .catch((error) => { - console.error(error); - setLoading(false); - // setError(error); - - return null; - }); - } - // return router.push(`/accounts`); - } - - const { errors } = formState; - - return ( -
- {error && ( -
- {error} -
- )} - -
- {isPrompt ? ( - - ) : ( - - )} - - - -
-
- ); -} From a3b412e356f6d9c9d40cbf081b535b86c5642d59 Mon Sep 17 00:00:00 2001 From: Elio Bischof Date: Wed, 28 Jun 2023 14:56:16 +0200 Subject: [PATCH 31/34] fix configuring acceptance env --- CONTRIBUTING.md | 2 +- acceptance/docker-compose.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a3f0e7767b4..44e0914bda4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -51,7 +51,7 @@ docker compose --file ./acceptance/docker-compose.yaml pull docker compose --file ./acceptance/docker-compose.yaml run setup # Configure your shell to use the environment variables written to ./apps/login/.env.acceptance -source ./apps/login/.env.acceptance +export $(cat ./apps/login/.env.acceptance | xargs) ``` ### Developing Against Your ZITADEL Cloud Instance diff --git a/acceptance/docker-compose.yaml b/acceptance/docker-compose.yaml index d12a4291a13..ac2fa512f59 100644 --- a/acceptance/docker-compose.yaml +++ b/acceptance/docker-compose.yaml @@ -45,7 +45,7 @@ services: environment: KEY: /key/zitadel-admin-sa.json SERVICE: http://zitadel:8080 - WRITE_ENVIRONMENT_FILE: /apps/login/.env.local + WRITE_ENVIRONMENT_FILE: /apps/login/.env.acceptance volumes: - "./machinekey:/key" - "../apps/login:/apps/login" From 0f2968ecccc8bd0a71315732b7da456d2d46e5fb Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 29 Jun 2023 10:26:51 +0200 Subject: [PATCH 32/34] cleanup --- apps/login/ui/RegisterPasskey.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/login/ui/RegisterPasskey.tsx b/apps/login/ui/RegisterPasskey.tsx index 800a57879e9..21f33d6a184 100644 --- a/apps/login/ui/RegisterPasskey.tsx +++ b/apps/login/ui/RegisterPasskey.tsx @@ -152,12 +152,11 @@ export default function RegisterPasskey({ sessionId, isPrompt }: Props) { .catch((error) => { console.error(error); setLoading(false); - // setError(error); + setError(error); return null; }); } - // return router.push(`/accounts`); }); } From 00c8b640c67d60a0661fe3d86be0e30f86e2f102 Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 29 Jun 2023 12:53:48 +0200 Subject: [PATCH 33/34] spread --- apps/login/app/(login)/passkey/add/page.tsx | 2 +- apps/login/lib/zitadel.ts | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/apps/login/app/(login)/passkey/add/page.tsx b/apps/login/app/(login)/passkey/add/page.tsx index eab8fa47ae6..15237a2d4de 100644 --- a/apps/login/app/(login)/passkey/add/page.tsx +++ b/apps/login/app/(login)/passkey/add/page.tsx @@ -44,7 +44,7 @@ export default async function Page({ A passkey is an authentication method on a device like your - fingerprint, Apple FaceID or similar.{" "} + fingerprint, Apple FaceID or similar. { const mgmt = user.getUser(server); + + const payload = { + email: { email }, + username: email, + profile: { firstName, lastName }, + }; return mgmt .addHumanUser( password ? { - email: { email }, - username: email, - profile: { firstName, lastName }, + ...payload, password: { password }, } - : { - email: { email }, - username: email, - profile: { firstName, lastName }, - }, + : payload, {} ) .then((resp: AddHumanUserResponse) => { From 5e93ed7cd38ca99928cd36a72b637e2c2871295a Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Thu, 29 Jun 2023 13:10:28 +0200 Subject: [PATCH 34/34] empty avatar without loginname --- apps/login/ui/UserAvatar.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/login/ui/UserAvatar.tsx b/apps/login/ui/UserAvatar.tsx index 6ab823bc4d1..053656d83d0 100644 --- a/apps/login/ui/UserAvatar.tsx +++ b/apps/login/ui/UserAvatar.tsx @@ -18,8 +18,8 @@ export default function UserAvatar({
{loginName}