fix async await client, react components

This commit is contained in:
peintnermax
2023-07-27 15:54:34 +02:00
parent 0471307564
commit f69d922bc1
15 changed files with 257 additions and 171 deletions

View File

@@ -1,5 +1,27 @@
import { getLegalAndSupportSettings, server } from "#/lib/zitadel";
import { SignInWithIDP } from "#/ui/SignInWithIDP";
import {
GetActiveIdentityProvidersResponse,
IdentityProvider,
ZitadelServer,
settings,
} from "@zitadel/server";
function getIdentityProviders(
server: ZitadelServer,
orgId?: string
): Promise<IdentityProvider[] | undefined> {
const settingsService = settings.getSettings(server);
console.log("req");
return settingsService
.getActiveIdentityProviders(
orgId ? { ctx: { orgId } } : { ctx: { instance: true } },
{}
)
.then((resp: GetActiveIdentityProvidersResponse) => {
return resp.identityProviders;
});
}
export default async function Page({
searchParams,
@@ -8,14 +30,18 @@ export default async function Page({
}) {
const legal = await getLegalAndSupportSettings(server);
console.log(server);
const identityProviders = await getIdentityProviders(server, "");
console.log(identityProviders);
return (
<div className="flex flex-col items-center space-y-4">
<h1>Register</h1>
<p className="ztdl-p">Create your ZITADEL account.</p>
{legal && <SignInWithIDP server={server}></SignInWithIDP>}
{legal && identityProviders && (
<SignInWithIDP identityProviders={identityProviders}></SignInWithIDP>
)}
</div>
);
}

View File

@@ -0,0 +1,19 @@
import { server, startIdentityProviderFlow } from "#/lib/zitadel";
import { NextRequest, NextResponse } from "next/server";
export async function POST(request: NextRequest) {
const body = await request.json();
if (body) {
let { idpId, successUrl, failureUrl } = body;
return startIdentityProviderFlow(server, { idpId, successUrl, failureUrl })
.then((resp) => {
return NextResponse.json(resp);
})
.catch((error) => {
return NextResponse.json(error, { status: 500 });
});
} else {
return NextResponse.json({}, { status: 400 });
}
}

View File

@@ -36,13 +36,14 @@
"@heroicons/react": "2.0.13",
"@tailwindcss/forms": "0.5.3",
"@vercel/analytics": "^1.0.0",
"@zitadel/client": "workspace:*",
"@zitadel/next": "workspace:*",
"@zitadel/react": "workspace:*",
"@zitadel/server": "workspace:*",
"clsx": "1.2.1",
"date-fns": "2.29.3",
"moment": "^2.29.4",
"next": "13.4.7",
"next": "13.4.12",
"next-themes": "^0.2.1",
"nice-grpc": "2.0.1",
"react": "18.2.0",

View File

@@ -1,57 +1,52 @@
import { ReactNode } from "react";
"use client";
import { ReactNode, useState } from "react";
// import { IdentityProviderType } from "@zitadel/server";
// import { IdentityProvider } from "@zitadel/client";
import {
ZitadelServer,
settings,
GetActiveIdentityProvidersResponse,
IdentityProvider,
IdentityProviderType,
} from "@zitadel/server";
import {
SignInWithGitlab,
SignInWithAzureAD,
SignInWithGoogle,
SignInWithGithub,
} from "@zitadel/react";
import { server, startIdentityProviderFlow } from "#/lib/zitadel";
import { useRouter } from "next/navigation";
export interface SignInWithIDPProps {
children?: ReactNode;
server: ZitadelServer;
orgId?: string;
identityProviders: any[];
}
function getIdentityProviders(
server: ZitadelServer,
orgId?: string
): Promise<IdentityProvider[] | undefined> {
const settingsService = settings.getSettings(server);
console.log("req");
return settingsService
.getActiveIdentityProviders(
orgId ? { ctx: { orgId } } : { ctx: { instance: true } },
{}
)
.then((resp: GetActiveIdentityProvidersResponse) => {
return resp.identityProviders;
export function SignInWithIDP({ identityProviders }: SignInWithIDPProps) {
const [loading, setLoading] = useState<boolean>(false);
const [error, setError] = useState<string>("");
const router = useRouter();
async function startFlow(idp: any) {
console.log("start flow");
const host = "http://localhost:3000";
setLoading(true);
const res = await fetch("/api/idp/start", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
idpId: idp.id,
successUrl: `${host}/api/idp/success`,
failureUrl: `${host}/api/idp/success`,
}),
});
}
export async function SignInWithIDP(props: SignInWithIDPProps) {
console.log(props.server);
const identityProviders = await getIdentityProviders(
props.server,
props.orgId
);
const response = await res.json();
console.log(identityProviders);
function startFlow(idp: IdentityProvider) {
return startIdentityProviderFlow(server, {
idpId: idp.id,
successUrl: "",
failureUrl: "",
}).then(() => {});
setLoading(false);
if (!res.ok) {
setError(response.details);
return Promise.reject(response.details);
}
return response;
}
return (
@@ -59,43 +54,48 @@ export async function SignInWithIDP(props: SignInWithIDPProps) {
{identityProviders &&
identityProviders.map((idp, i) => {
switch (idp.type) {
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITHUB:
case 6: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITHUB:
return (
<SignInWithGithub
key={`idp-${i}`}
name={idp.name}
></SignInWithGithub>
);
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITHUB_ES:
case 7: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITHUB_ES:
return (
<SignInWithGithub
key={`idp-${i}`}
name={idp.name}
></SignInWithGithub>
);
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_AZURE_AD:
case 5: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_AZURE_AD:
return (
<SignInWithAzureAD
key={`idp-${i}`}
name={idp.name}
></SignInWithAzureAD>
);
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GOOGLE:
case 10: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GOOGLE:
return (
<SignInWithGoogle
key={`idp-${i}`}
name={idp.name}
onClick={() => startFlow(idp)}
onClick={() =>
startFlow(idp).then(({ authUrl }) => {
console.log("done");
router.push(authUrl);
})
}
></SignInWithGoogle>
);
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITLAB:
case 8: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITLAB:
return (
<SignInWithGitlab
key={`idp-${i}`}
name={idp.name}
></SignInWithGitlab>
);
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITLAB_SELF_HOSTED:
case 9: //IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITLAB_SELF_HOSTED:
return (
<SignInWithGitlab
key={`idp-${i}`}

View File

@@ -11,12 +11,12 @@
],
"scripts": {
"generate": "buf generate https://github.com/zitadel/zitadel.git --path ./proto/zitadel",
"build": "tsup src/index.ts --format esm,cjs --dts",
"build": "tsup --dts",
"test": "pnpm test:unit",
"test:watch": "pnpm test:unit:watch",
"test:unit": "jest",
"test:unit:watch": "jest --watch",
"dev": "tsup src/index.ts --format esm,cjs --watch --dts",
"dev": "tsup --watch --dts",
"lint": "eslint \"src/**/*.ts*\"",
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
},
@@ -41,4 +41,4 @@
"nice-grpc-web": "^3.2.3",
"protobufjs": "^7.2.3"
}
}
}

View File

@@ -3,3 +3,11 @@ export { initializeApp, getApps } from "./app";
export { getAuth } from "./auth";
export type { ZitadelOptions } from "./app";
export * from "./proto/client/zitadel/settings/v2alpha/legal_settings_pb";
export * from "./proto/client/zitadel/settings/v2alpha/settings_service_pb";
export * from "./proto/client/zitadel/settings/v2alpha/settings_pb";
export * from "./proto/client/zitadel/idp_pb";
export * from "./proto/client/zitadel/user_pb";
export * from "./proto/client/zitadel/settings_pb";

View File

@@ -0,0 +1,13 @@
import { defineConfig, Options } from "tsup";
export default defineConfig((options: Options) => ({
treeshake: true,
splitting: true,
publicDir: true,
entry: ["src/index.ts", "src/**/index.ts"],
format: ["esm", "cjs"],
dts: true,
minify: true,
clean: true,
...options,
}));

View File

@@ -26,8 +26,8 @@
"@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/react": "^18.2.17",
"@types/react-dom": "^18.2.7",
"@types/testing-library__jest-dom": "^5.14.6",
"@zitadel/tsconfig": "workspace:*",
"autoprefixer": "10.4.13",

View File

@@ -1,4 +1,8 @@
export interface SignInWithIdentityProviderProps {
children?: React.ReactNode;
import { ButtonHTMLAttributes, DetailedHTMLProps } from "react";
export type SignInWithIdentityProviderProps = DetailedHTMLProps<
ButtonHTMLAttributes<HTMLButtonElement>,
HTMLButtonElement
> & {
name?: string;
}
};

View File

@@ -1,18 +1,25 @@
"use client";
import { ReactNode, forwardRef } from "react";
import { SignInWithIdentityProviderProps } from "./SignInWith";
export interface SignInWithAzureADProps
extends SignInWithIdentityProviderProps {}
export function SignInWithAzureAD(props: SignInWithAzureADProps) {
return (
<div className="ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm">
export const SignInWithAzureAD = forwardRef<
HTMLButtonElement,
SignInWithIdentityProviderProps
>(
({ children, className = "", name = "", ...props }, ref): ReactNode => (
<button
type="button"
ref={ref}
className={`ztdl-w-full ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm ${className}`}
{...props}
>
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
<svg
xmlns="http://www.w3.org/2000/svg"
width={25}
height={24}
fill="none"
{...props}
>
<path
fill="#e24329"
@@ -32,11 +39,15 @@ export function SignInWithAzureAD(props: SignInWithAzureADProps) {
/>
</svg>
</div>
<span className="ztdl-ml-4">
{props.name ? props.name : "Sign in with AzureAD"}
</span>
</div>
);
}
{children ? (
children
) : (
<span className="ztdl-ml-4">
{name ? name : "Sign in with AzureAD"}
</span>
)}
</button>
)
);
SignInWithAzureAD.displayName = "SignInWithAzureAD";

View File

@@ -1,18 +1,25 @@
"use client";
import { ReactNode, forwardRef } from "react";
import { SignInWithIdentityProviderProps } from "./SignInWith";
export interface SignInWithGithubProps
extends SignInWithIdentityProviderProps {}
export function SignInWithGithub(props: SignInWithGithubProps) {
return (
<div className="ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm">
export const SignInWithGithub = forwardRef<
HTMLButtonElement,
SignInWithIdentityProviderProps
>(
({ children, className = "", name = "", ...props }, ref): ReactNode => (
<button
type="button"
ref={ref}
className={`ztdl-w-full ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm ${className}`}
{...props}
>
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
<svg
xmlns="http://www.w3.org/2000/svg"
width={25}
height={24}
fill="none"
{...props}
>
<path
fill="#e24329"
@@ -32,11 +39,13 @@ export function SignInWithGithub(props: SignInWithGithubProps) {
/>
</svg>
</div>
<span className="ztdl-ml-4">
{props.name ? props.name : "Sign in with Github"}
</span>
</div>
);
}
{children ? (
children
) : (
<span className="ztdl-ml-4">{name ? name : "Sign in with Github"}</span>
)}
</button>
)
);
SignInWithGithub.displayName = "SignInWithGithub";

View File

@@ -1,18 +1,23 @@
import { ReactNode, forwardRef } from "react";
import { SignInWithIdentityProviderProps } from "./SignInWith";
export interface SignInWithGitlabProps
extends SignInWithIdentityProviderProps {}
export function SignInWithGitlab(props: SignInWithGitlabProps) {
return (
<div className="ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm">
export const SignInWithGitlab = forwardRef<
HTMLButtonElement,
SignInWithIdentityProviderProps
>(
({ children, className = "", name = "", ...props }, ref): ReactNode => (
<button
type="button"
ref={ref}
className={`ztdl-w-full ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm ${className}`}
{...props}
>
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
<svg
xmlns="http://www.w3.org/2000/svg"
width={25}
height={24}
fill="none"
{...props}
>
<path
fill="#e24329"
@@ -32,11 +37,13 @@ export function SignInWithGitlab(props: SignInWithGitlabProps) {
/>
</svg>
</div>
<span className="ztdl-ml-4">
{props.name ? props.name : "Sign in with Gitlab"}
</span>
</div>
);
}
{children ? (
children
) : (
<span className="ztdl-ml-4">{name ? name : "Sign in with GitLab"}</span>
)}
</button>
)
);
SignInWithGitlab.displayName = "SignInWithGitlab";

View File

@@ -1,23 +1,9 @@
"use client";
import {
ButtonHTMLAttributes,
DetailedHTMLProps,
ReactNode,
forwardRef,
} from "react";
import { ReactNode, forwardRef } from "react";
import { SignInWithIdentityProviderProps } from "./SignInWith";
type SignInWithGoogleProps = DetailedHTMLProps<
ButtonHTMLAttributes<HTMLButtonElement>,
HTMLButtonElement
> & {
name?: string;
};
export const SignInWithGoogle = forwardRef<
HTMLButtonElement,
SignInWithGoogleProps
SignInWithIdentityProviderProps
>(
({ children, className = "", name = "", ...props }, ref): ReactNode => (
<button

View File

@@ -2,20 +2,11 @@ import "./styles.css";
export { SignInWithGoogle } from "./components/SignInWithGoogle";
export {
SignInWithGitlab,
type SignInWithGitlabProps,
} from "./components/SignInWithGitlab";
export { SignInWithGitlab } from "./components/SignInWithGitlab";
export {
SignInWithAzureAD,
type SignInWithAzureADProps,
} from "./components/SignInWithAzureAD";
export { SignInWithAzureAD } from "./components/SignInWithAzureAD";
export {
SignInWithGithub,
type SignInWithGithubProps,
} from "./components/SignInWithGithub";
export { SignInWithGithub } from "./components/SignInWithGithub";
export {
ZitadelReactProvider,

105
pnpm-lock.yaml generated
View File

@@ -38,6 +38,9 @@ importers:
'@vercel/analytics':
specifier: ^1.0.0
version: 1.0.0(react@18.2.0)
'@zitadel/client':
specifier: workspace:*
version: link:../../packages/zitadel-client
'@zitadel/next':
specifier: workspace:*
version: link:../../packages/zitadel-next
@@ -57,11 +60,11 @@ importers:
specifier: ^2.29.4
version: 2.29.4
next:
specifier: 13.4.7
version: 13.4.7(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0)
specifier: 13.4.12
version: 13.4.12(@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.7)(react-dom@18.2.0)(react@18.2.0)
version: 0.2.1(next@13.4.12)(react-dom@18.2.0)(react@18.2.0)
nice-grpc:
specifier: 2.0.1
version: 2.0.1
@@ -325,11 +328,11 @@ importers:
specifier: ^29.5.1
version: 29.5.2
'@types/react':
specifier: ^17.0.13
version: 17.0.52
specifier: ^18.2.17
version: 18.2.17
'@types/react-dom':
specifier: ^17.0.8
version: 17.0.18
specifier: ^18.2.7
version: 18.2.7
'@types/testing-library__jest-dom':
specifier: ^5.14.6
version: 5.14.6
@@ -1495,8 +1498,8 @@ packages:
resolution: {integrity: sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==}
dev: false
/@next/env@13.4.7:
resolution: {integrity: sha512-ZlbiFulnwiFsW9UV1ku1OvX/oyIPLtMk9p/nnvDSwI0s7vSoZdRtxXNsaO+ZXrLv/pMbXVGq4lL8TbY9iuGmVw==}
/@next/env@13.4.12:
resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==}
dev: false
/@next/eslint-plugin-next@13.4.12:
@@ -1514,8 +1517,8 @@ packages:
dev: false
optional: true
/@next/swc-darwin-arm64@13.4.7:
resolution: {integrity: sha512-VZTxPv1b59KGiv/pZHTO5Gbsdeoxcj2rU2cqJu03btMhHpn3vwzEK0gUSVC/XW96aeGO67X+cMahhwHzef24/w==}
/@next/swc-darwin-arm64@13.4.12:
resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
@@ -1532,8 +1535,8 @@ packages:
dev: false
optional: true
/@next/swc-darwin-x64@13.4.7:
resolution: {integrity: sha512-gO2bw+2Ymmga+QYujjvDz9955xvYGrWofmxTq7m70b9pDPvl7aDFABJOZ2a8SRCuSNB5mXU8eTOmVVwyp/nAew==}
/@next/swc-darwin-x64@13.4.12:
resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
@@ -1550,8 +1553,8 @@ packages:
dev: false
optional: true
/@next/swc-linux-arm64-gnu@13.4.7:
resolution: {integrity: sha512-6cqp3vf1eHxjIDhEOc7Mh/s8z1cwc/l5B6ZNkOofmZVyu1zsbEM5Hmx64s12Rd9AYgGoiCz4OJ4M/oRnkE16/Q==}
/@next/swc-linux-arm64-gnu@13.4.12:
resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
@@ -1568,8 +1571,8 @@ packages:
dev: false
optional: true
/@next/swc-linux-arm64-musl@13.4.7:
resolution: {integrity: sha512-T1kD2FWOEy5WPidOn1si0rYmWORNch4a/NR52Ghyp4q7KyxOCuiOfZzyhVC5tsLIBDH3+cNdB5DkD9afpNDaOw==}
/@next/swc-linux-arm64-musl@13.4.12:
resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
@@ -1586,8 +1589,8 @@ packages:
dev: false
optional: true
/@next/swc-linux-x64-gnu@13.4.7:
resolution: {integrity: sha512-zaEC+iEiAHNdhl6fuwl0H0shnTzQoAoJiDYBUze8QTntE/GNPfTYpYboxF5LRYIjBwETUatvE0T64W6SKDipvg==}
/@next/swc-linux-x64-gnu@13.4.12:
resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
@@ -1604,8 +1607,8 @@ packages:
dev: false
optional: true
/@next/swc-linux-x64-musl@13.4.7:
resolution: {integrity: sha512-X6r12F8d8SKAtYJqLZBBMIwEqcTRvUdVm+xIq+l6pJqlgT2tNsLLf2i5Cl88xSsIytBICGsCNNHd+siD2fbWBA==}
/@next/swc-linux-x64-musl@13.4.12:
resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
@@ -1622,8 +1625,8 @@ packages:
dev: false
optional: true
/@next/swc-win32-arm64-msvc@13.4.7:
resolution: {integrity: sha512-NPnmnV+vEIxnu6SUvjnuaWRglZzw4ox5n/MQTxeUhb5iwVWFedolPFebMNwgrWu4AELwvTdGtWjqof53AiWHcw==}
/@next/swc-win32-arm64-msvc@13.4.12:
resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
@@ -1640,8 +1643,8 @@ packages:
dev: false
optional: true
/@next/swc-win32-ia32-msvc@13.4.7:
resolution: {integrity: sha512-6Hxijm6/a8XqLQpOOf/XuwWRhcuc/g4rBB2oxjgCMuV9Xlr2bLs5+lXyh8w9YbAUMYR3iC9mgOlXbHa79elmXw==}
/@next/swc-win32-ia32-msvc@13.4.12:
resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
@@ -1658,8 +1661,8 @@ packages:
dev: false
optional: true
/@next/swc-win32-x64-msvc@13.4.7:
resolution: {integrity: sha512-sW9Yt36Db1nXJL+mTr2Wo0y+VkPWeYhygvcHj1FF0srVtV+VoDjxleKtny21QHaG05zdeZnw2fCtf2+dEqgwqA==}
/@next/swc-win32-x64-msvc@13.4.12:
resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -1816,7 +1819,7 @@ packages:
dependencies:
'@babel/runtime': 7.20.1
'@testing-library/dom': 9.3.0
'@types/react-dom': 18.0.9
'@types/react-dom': 18.2.7
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
@@ -1956,16 +1959,16 @@ packages:
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
dev: true
/@types/react-dom@17.0.18:
resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==}
/@types/react-dom@18.0.9:
resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==}
dependencies:
'@types/react': 17.0.52
dev: true
/@types/react-dom@18.0.9:
resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==}
/@types/react-dom@18.2.7:
resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==}
dependencies:
'@types/react': 18.2.8
'@types/react': 18.2.17
dev: true
/@types/react@17.0.52:
@@ -1976,6 +1979,14 @@ packages:
csstype: 3.1.1
dev: true
/@types/react@18.2.17:
resolution: {integrity: sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==}
dependencies:
'@types/prop-types': 15.7.5
'@types/scheduler': 0.16.2
csstype: 3.1.1
dev: true
/@types/react@18.2.8:
resolution: {integrity: sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==}
dependencies:
@@ -6094,14 +6105,14 @@ packages:
/natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
/next-themes@0.2.1(next@13.4.7)(react-dom@18.2.0)(react@18.2.0):
/next-themes@0.2.1(next@13.4.12)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==}
peerDependencies:
next: '*'
react: '*'
react-dom: '*'
dependencies:
next: 13.4.7(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0)
next: 13.4.12(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
@@ -6149,8 +6160,8 @@ packages:
- babel-plugin-macros
dev: false
/next@13.4.7(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0):
resolution: {integrity: sha512-M8z3k9VmG51SRT6v5uDKdJXcAqLzP3C+vaKfLIAM0Mhx1um1G7MDnO63+m52qPdZfrTFzMZNzfsgvm3ghuVHIQ==}
/next@13.4.12(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0):
resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==}
engines: {node: '>=16.8.0'}
hasBin: true
peerDependencies:
@@ -6167,7 +6178,7 @@ packages:
sass:
optional: true
dependencies:
'@next/env': 13.4.7
'@next/env': 13.4.12
'@swc/helpers': 0.5.1
busboy: 1.6.0
caniuse-lite: 1.0.30001473
@@ -6179,15 +6190,15 @@ packages:
watchpack: 2.4.0
zod: 3.21.4
optionalDependencies:
'@next/swc-darwin-arm64': 13.4.7
'@next/swc-darwin-x64': 13.4.7
'@next/swc-linux-arm64-gnu': 13.4.7
'@next/swc-linux-arm64-musl': 13.4.7
'@next/swc-linux-x64-gnu': 13.4.7
'@next/swc-linux-x64-musl': 13.4.7
'@next/swc-win32-arm64-msvc': 13.4.7
'@next/swc-win32-ia32-msvc': 13.4.7
'@next/swc-win32-x64-msvc': 13.4.7
'@next/swc-darwin-arm64': 13.4.12
'@next/swc-darwin-x64': 13.4.12
'@next/swc-linux-arm64-gnu': 13.4.12
'@next/swc-linux-arm64-musl': 13.4.12
'@next/swc-linux-x64-gnu': 13.4.12
'@next/swc-linux-x64-musl': 13.4.12
'@next/swc-win32-arm64-msvc': 13.4.12
'@next/swc-win32-ia32-msvc': 13.4.12
'@next/swc-win32-x64-msvc': 13.4.12
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros