diff --git a/leaky-ships/.gitignore b/leaky-ships/.gitignore index 751d600..85b0254 100644 --- a/leaky-ships/.gitignore +++ b/leaky-ships/.gitignore @@ -1,8 +1,11 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. -#logs +# logs /log +# prisma +/prisma/migrations + # dependencies /node_modules /.pnp @@ -29,6 +32,7 @@ yarn-error.log* .pnpm-debug.log* # local env files +.env .env*.local # vercel diff --git a/leaky-ships/.prettierrc.json b/leaky-ships/.prettierrc.json deleted file mode 100644 index 7e66ab7..0000000 --- a/leaky-ships/.prettierrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "semi": false, - "plugins": ["prettier-plugin-tailwindcss"], - "pluginSearchDirs": false -} diff --git a/leaky-ships/components/BurgerMenu.tsx b/leaky-ships/components/BurgerMenu.tsx new file mode 100644 index 0000000..521c13f --- /dev/null +++ b/leaky-ships/components/BurgerMenu.tsx @@ -0,0 +1,28 @@ +import classNames from "classnames" +import React from "react" + +function BurgerMenu({ + onClick, + blur, +}: { + onClick?: () => void + blur?: boolean +}) { + return ( + + ) +} + +export default BurgerMenu diff --git a/leaky-ships/components/FogImages.tsx b/leaky-ships/components/FogImages.tsx deleted file mode 100644 index 06ba202..0000000 --- a/leaky-ships/components/FogImages.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import Image from "next/image" - -function FogImages() { - return ( - <> - {`fog1.png`} - {`fog1.png`} - {`fog4.png`} - - ) -} - -export default FogImages diff --git a/leaky-ships/components/Gamefield.tsx b/leaky-ships/components/Gamefield.tsx deleted file mode 100644 index 8a9b630..0000000 --- a/leaky-ships/components/Gamefield.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { CSSProperties } from "react" -// import Bluetooth from './Bluetooth' -import BorderTiles from "./BorderTiles" -import EventBar from "./EventBar" -// import FogImages from './FogImages' -import HitElems from "./HitElems" -import Labeling from "./Labeling" -import Ships from "./Ships" -import useGameEvent from "../lib/hooks/useGameEvent" -import Targets from "./Targets" - -function Gamefield() { - const count = 12 - const { pointersProps, targetsProps, tilesProps, hits } = useGameEvent(count) - - return ( -
- {/* */} -
- {/* Bordes */} - - - {/* Collumn lettes and row numbers */} - - - {/* Ships */} - - - - - {/* Fog images */} - {/* */} - - {/* Debug */} -
- -
- ) -} - -export default Gamefield diff --git a/leaky-ships/components/BorderTiles.tsx b/leaky-ships/components/Gamefield/BorderTiles.tsx similarity index 70% rename from leaky-ships/components/BorderTiles.tsx rename to leaky-ships/components/Gamefield/BorderTiles.tsx index eef503b..34c9568 100644 --- a/leaky-ships/components/BorderTiles.tsx +++ b/leaky-ships/components/Gamefield/BorderTiles.tsx @@ -1,23 +1,22 @@ +import { MouseCursor } from "../../interfaces/frontend" +import { count } from "./Gamefield" +import { borderCN, cornerCN, fieldIndex } from "@lib/utils/helpers" import { CSSProperties, Dispatch, SetStateAction } from "react" -import { borderCN, cornerCN, fieldIndex } from "../lib/utils/helpers" -import { Position, MouseCursor } from "../interfaces/frontend" type TilesType = { key: number isGameTile: boolean - classNameString: string + className: string x: number y: number } function BorderTiles({ - props: { count, settingTarget, setMouseCursor, setLastLeftTile }, + props: { settingTarget, setMouseCursor }, }: { props: { - count: number settingTarget: (isGameTile: boolean, x: number, y: number) => void setMouseCursor: Dispatch> - setLastLeftTile: Dispatch> } }) { let tilesProperties: TilesType[] = [] @@ -31,10 +30,10 @@ function BorderTiles({ const classNames = ["border-tile"] if (borderType) classNames.push("edge", borderType) if (isGameTile) classNames.push("game-tile") - const classNameString = classNames.join(" ") + const className = classNames.join(" ") tilesProperties.push({ key, - classNameString, + className, isGameTile, x: x + 1, y: y + 1, @@ -44,17 +43,16 @@ function BorderTiles({ return ( <> - {tilesProperties.map(({ key, classNameString, isGameTile, x, y }) => { + {tilesProperties.map(({ key, className, isGameTile, x, y }) => { return (
settingTarget(isGameTile, x, y)} onMouseEnter={() => setMouseCursor({ x, y, shouldShow: isGameTile }) } - onMouseLeave={() => setLastLeftTile({ x, y })} >
) })} diff --git a/leaky-ships/components/EventBar.tsx b/leaky-ships/components/Gamefield/EventBar.tsx similarity index 88% rename from leaky-ships/components/EventBar.tsx rename to leaky-ships/components/Gamefield/EventBar.tsx index cdb1353..3805910 100644 --- a/leaky-ships/components/EventBar.tsx +++ b/leaky-ships/components/Gamefield/EventBar.tsx @@ -1,6 +1,6 @@ -import React, { Dispatch, SetStateAction } from "react" -import { Items, Target } from "../interfaces/frontend" +import { Items, Target } from "../../interfaces/frontend" import Item from "./Item" +import React, { Dispatch, SetStateAction } from "react" function EventBar({ props: { setMode, setTarget }, @@ -14,7 +14,7 @@ function EventBar({ { icon: "burger-menu", text: "Menu" }, { icon: "radar", text: "Radar scan", mode: 0, amount: 1 }, { icon: "torpedo", text: "Fire torpedo", mode: 1, amount: 1 }, - { icon: "scope", text: "Fire missile", mode: 2 }, + { icon: "scope", text: "Fire missile", mode: 3 }, { icon: "gear", text: "Settings" }, ] return ( diff --git a/leaky-ships/components/Gamefield/FogImages.tsx b/leaky-ships/components/Gamefield/FogImages.tsx new file mode 100644 index 0000000..3d455c9 --- /dev/null +++ b/leaky-ships/components/Gamefield/FogImages.tsx @@ -0,0 +1,13 @@ +function FogImages() { + return ( + <> + {`fog1.png`} + {`fog1.png`} + {`fog1.png`} + {`fog1.png`} + {`fog4.png`} + + ) +} + +export default FogImages diff --git a/leaky-ships/components/Gamefield/Gamefield.tsx b/leaky-ships/components/Gamefield/Gamefield.tsx new file mode 100644 index 0000000..acd750b --- /dev/null +++ b/leaky-ships/components/Gamefield/Gamefield.tsx @@ -0,0 +1,139 @@ +import { Draw, Hit, MouseCursor, Target } from "../../interfaces/frontend" +// import Bluetooth from "./Bluetooth" +// import FogImages from "./FogImages" +import Labeling from "./Labeling" +import Ships from "./Ships" +import BorderTiles from "@components/Gamefield/BorderTiles" +import EventBar from "@components/Gamefield/EventBar" +import HitElems from "@components/Gamefield/HitElems" +import Targets from "@components/Gamefield/Targets" +import { useDraw } from "@hooks/useDraw" +import { + hitReducer, + initlialTarget, + initlialTargetPreview, + initlialMouseCursor, + overlapsWithAnyBorder, + isAlreadyHit, + targetList, +} from "@lib/utils/helpers" +import { CSSProperties, useCallback } from "react" +import { useEffect, useReducer, useState } from "react" + +export const count = 12 + +function Gamefield() { + const [target, setTarget] = useState(initlialTarget) + const [targetPreview, setTargetPreview] = useState( + initlialTargetPreview + ) + const [mouseCursor, setMouseCursor] = + useState(initlialMouseCursor) + const [hits, DispatchHits] = useReducer(hitReducer, [] as Hit[]) + const [mode, setMode] = useState(0) + + const settingTarget = useCallback( + (isGameTile: boolean, x: number, y: number) => { + const list = targetList(targetPreview, mode) + if ( + !isGameTile || + !list.filter(({ x, y }) => !isAlreadyHit(x, y, hits)).length + ) + return + if (target.show && target.x == x && target.y == y) { + DispatchHits({ + type: "fireMissile", + payload: list.map(({ x, y }) => ({ + hit: isAlreadyHit(x, y, hits), + x, + y, + })), + }) + setTarget((t) => ({ ...t, show: false })) + } else if (!overlapsWithAnyBorder(targetPreview, mode)) + setTarget({ show: true, x, y }) + }, + [hits, mode, target, targetPreview] + ) + + useEffect(() => { + const { x, y, show } = target + const { shouldShow, ...position } = mouseCursor + if (!shouldShow || overlapsWithAnyBorder(position, mode)) + setTargetPreview((e) => ({ ...e, show: false })) + else { + setTargetPreview({ + ...position, + show: !show || x !== position.x || y !== position.y, + }) + } + }, [mode, mouseCursor, target]) + + const [color, setColor] = useState("#f00") + const [disable, setDisable] = useState(false) + const { canvasRef, onMouseDown, clear } = useDraw(drawLine) + + function drawLine({ prevPoint, currentPoint, ctx }: Draw) { + const { x: currX, y: currY } = currentPoint + const lineColor = color + const lineWidth = 5 + + let startPoint = prevPoint ?? currentPoint + ctx.beginPath() + ctx.lineWidth = lineWidth + ctx.strokeStyle = lineColor + ctx.moveTo(startPoint.x, startPoint.y) + ctx.lineTo(currX, currY) + ctx.stroke() + + ctx.fillStyle = lineColor + ctx.beginPath() + ctx.arc(startPoint.x, startPoint.y, 2, 0, 2 * Math.PI) + ctx.fill() + } + + return ( +
+ {/* */} +
+ setMouseCursor((e) => ({ ...e, shouldShow: false })) + } + > + {/* Bordes */} + + + {/* Collumn lettes and row numbers */} + + + {/* Ships */} + + + + {/* Fog images */} + {/* */} + + + {/* Debug */} + +
+ + + +
+ ) +} + +export default Gamefield diff --git a/leaky-ships/components/GamefieldPointer.tsx b/leaky-ships/components/Gamefield/GamefieldPointer.tsx similarity index 72% rename from leaky-ships/components/GamefieldPointer.tsx rename to leaky-ships/components/Gamefield/GamefieldPointer.tsx index c90cc9e..cbcc716 100644 --- a/leaky-ships/components/GamefieldPointer.tsx +++ b/leaky-ships/components/Gamefield/GamefieldPointer.tsx @@ -1,18 +1,20 @@ +import { Target, TargetList } from "../../interfaces/frontend" import { faCrosshairs } from "@fortawesome/pro-solid-svg-icons" -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" -import { CSSProperties } from "react" -import classNames from "classnames" import { faRadar } from "@fortawesome/pro-thin-svg-icons" -import { Target, TargetList } from "../interfaces/frontend" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import classNames from "classnames" +import { CSSProperties } from "react" export interface PointerProps extends Target, TargetList { imply: boolean } function GamefieldPointer({ - props: { preview, x, y, show, type, edges, imply }, + props: { x, y, show, type, edges, imply }, + preview, }: { props: PointerProps + preview?: boolean }) { const isRadar = type === "radar" const style = !(isRadar && !edges.filter((s) => s).length) @@ -20,15 +22,11 @@ function GamefieldPointer({ : { "--x1": x - 1, "--x2": x + 2, "--y1": y - 1, "--y2": y + 2 } return (
diff --git a/leaky-ships/components/HitElems.tsx b/leaky-ships/components/Gamefield/HitElems.tsx similarity index 91% rename from leaky-ships/components/HitElems.tsx rename to leaky-ships/components/Gamefield/HitElems.tsx index 0a39749..12b81f6 100644 --- a/leaky-ships/components/HitElems.tsx +++ b/leaky-ships/components/Gamefield/HitElems.tsx @@ -1,7 +1,7 @@ +import { Hit } from "../../interfaces/frontend" import { faBurst, faXmark } from "@fortawesome/pro-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" import { CSSProperties } from "react" -import { Hit } from "../interfaces/frontend" function HitElems({ hits }: { hits: Hit[] }) { return ( diff --git a/leaky-ships/components/Item.tsx b/leaky-ships/components/Gamefield/Item.tsx similarity index 100% rename from leaky-ships/components/Item.tsx rename to leaky-ships/components/Gamefield/Item.tsx diff --git a/leaky-ships/components/Labeling.tsx b/leaky-ships/components/Gamefield/Labeling.tsx similarity index 92% rename from leaky-ships/components/Labeling.tsx rename to leaky-ships/components/Gamefield/Labeling.tsx index 6244ed5..5b33d21 100644 --- a/leaky-ships/components/Labeling.tsx +++ b/leaky-ships/components/Gamefield/Labeling.tsx @@ -1,7 +1,7 @@ +import { Field } from "../../interfaces/frontend" +import { fieldIndex } from "@lib/utils/helpers" import classNames from "classnames" import { CSSProperties } from "react" -import { fieldIndex } from "../lib/utils/helpers" -import { Field } from "../interfaces/frontend" function Labeling({ count }: { count: number }) { let elems: (Field & { diff --git a/leaky-ships/components/Ships.tsx b/leaky-ships/components/Gamefield/Ships.tsx similarity index 100% rename from leaky-ships/components/Ships.tsx rename to leaky-ships/components/Gamefield/Ships.tsx diff --git a/leaky-ships/components/Gamefield/Targets.tsx b/leaky-ships/components/Gamefield/Targets.tsx new file mode 100644 index 0000000..5f6a349 --- /dev/null +++ b/leaky-ships/components/Gamefield/Targets.tsx @@ -0,0 +1,30 @@ +import { Hit, Target } from "../../interfaces/frontend" +import GamefieldPointer from "./GamefieldPointer" +import { composeTargetTiles } from "@lib/utils/helpers" +import React from "react" + +function Targets({ + props: { target, targetPreview, mode, hits }, +}: { + props: { + target: Target + targetPreview: Target + mode: number + hits: Hit[] + } +}) { + return ( + <> + {[ + ...composeTargetTiles(target, mode, hits).map((props, i) => ( + + )), + ...composeTargetTiles(targetPreview, mode, hits).map((props, i) => ( + + )), + ]} + + ) +} + +export default Targets diff --git a/leaky-ships/components/Lobby/Button.tsx b/leaky-ships/components/Lobby/Button.tsx new file mode 100644 index 0000000..a547435 --- /dev/null +++ b/leaky-ships/components/Lobby/Button.tsx @@ -0,0 +1,46 @@ +import classNames from "classnames" +import React from "react" +import { ReactNode } from "react" + +function Button({ + type, + disabled, + onClick, + children, + latching, + isLatched, +}: { + type: "red" | "orange" | "green" | "gray" + disabled?: boolean + onClick: () => void + children: ReactNode + latching?: boolean + isLatched?: boolean +}) { + return ( + + ) +} + +export default Button diff --git a/leaky-ships/components/Lobby/Icon.tsx b/leaky-ships/components/Lobby/Icon.tsx new file mode 100644 index 0000000..de4c9c4 --- /dev/null +++ b/leaky-ships/components/Lobby/Icon.tsx @@ -0,0 +1,27 @@ +import { ReactNode } from "react" + +function Icon({ + src, + children, + onClick, +}: { + src: string + children: ReactNode + onClick?: () => void +}) { + return ( + + ) +} + +export default Icon diff --git a/leaky-ships/components/Lobby/LobbyFrame.tsx b/leaky-ships/components/Lobby/LobbyFrame.tsx new file mode 100644 index 0000000..6c15900 --- /dev/null +++ b/leaky-ships/components/Lobby/LobbyFrame.tsx @@ -0,0 +1,130 @@ +import Button from "./Button" +import Icon from "./Icon" +import Player from "./Player" +import { + faRightFromBracket, + faSpinnerThird, +} from "@fortawesome/pro-solid-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { useGameProps } from "@hooks/useGameProps" +import useSocket from "@hooks/useSocket" +import { socket } from "@lib/socket" +import { useSession } from "next-auth/react" +import { useRouter } from "next/router" +import { Fragment, ReactNode, useEffect, useMemo, useState } from "react" + +function WithDots({ children }: { children: ReactNode }) { + const [dots, setDots] = useState(1) + + useEffect(() => { + const interval = setInterval(() => setDots((e) => (e % 3) + 1), 1000) + return () => clearInterval(interval) + }, []) + + return ( + <> + {children + " "} + {Array.from(Array(dots), () => ".").join("")} + {Array.from(Array(3 - dots), (_, i) => ( +   + ))} + + ) +} + +function LobbyFrame({ openSettings }: { openSettings: () => void }) { + const { payload, userStates, full, leave, reset } = useGameProps() + const { isConnected } = useSocket() + const router = useRouter() + const { data: session } = useSession() + const [launchTime, setLaunchTime] = useState(3) + + const launching = useMemo( + () => + payload?.users.length === 2 && + !userStates.filter((user) => !user.isReady).length, + [payload?.users.length, userStates] + ) + + useEffect(() => { + if (!launching || launchTime >= 1) return + router.push("/gamefield") + }, [launching, launchTime, router]) + + useEffect(() => { + if (!launching) return setLaunchTime(3) + if (launchTime === 0) return + + const timeout = setTimeout(() => { + setLaunchTime((e) => e - 1) + }, 1000) + + return () => clearTimeout(timeout) + }, [launching, launchTime]) + + useEffect(() => { + if (payload?.game?.id || !isConnected) return + socket.emit("update", full) + }, [full, payload?.game?.id, isConnected]) + + return ( +
+
+ Chat +

+ {launching ? ( + {"Game is starting in " + launchTime} + ) : ( + <> + Game-PIN:{" "} + {isConnected ? ( + {payload?.gamePin ?? "----"} + ) : ( + + )} + + )} +

+ + Settings + +
+
+ {isConnected ? ( + <> + +

VS

+ {payload?.users[1] ? ( + + ) : ( +

+ Warte auf Spieler 2 +

+ )} + + ) : ( +

+ Warte auf Verbindung +

+ )} +
+
+ +
+
+ ) +} + +export default LobbyFrame diff --git a/leaky-ships/components/Lobby/Player.tsx b/leaky-ships/components/Lobby/Player.tsx new file mode 100644 index 0000000..35e28db --- /dev/null +++ b/leaky-ships/components/Lobby/Player.tsx @@ -0,0 +1,128 @@ +import Button from "./Button" +import { + faCheck, + faHandPointer, + faHourglass1, + faHourglass2, + faHourglass3, + faHourglassClock, +} from "@fortawesome/pro-solid-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { faCaretDown } from "@fortawesome/sharp-solid-svg-icons" +import { useGameProps } from "@hooks/useGameProps" +import { socket } from "@lib/socket" +import classNames from "classnames" +import { CSSProperties, useEffect, useMemo, useState } from "react" + +function HourGlass() { + const [count, setCount] = useState(3) + + useEffect(() => { + const interval = setInterval(() => setCount((e) => (e + 1) % 4), 1000) + return () => clearInterval(interval) + }, []) + + const icon = useMemo(() => { + switch (count) { + case 0: + return faHourglass3 + case 1: + return faHourglass1 + case 2: + return faHourglass2 + case 3: + return faHourglass3 + default: + return faHourglassClock + } + }, [count]) + + return ( + + ) +} + +function Player({ + src, + i, + userId, +}: { + src: string + i: number + userId?: string +}) { + const { payload, userStates, setIsReady } = useGameProps() + const player = useMemo(() => payload?.users[i], [i, payload?.users]) + const { isReady, isConnected } = useMemo(() => userStates[i], [i, userStates]) + const primary = useMemo( + () => userId && userId === payload?.users[i]?.id, + [i, payload?.users, userId] + ) + + return ( +
+

+ {player?.name ?? "Spieler " + (player?.index === 2 ? "2" : "1")} +

+
+ {src} + {primary ? ( + + ) : ( + <> + )} +
+ +
+ ) +} + +export default Player diff --git a/leaky-ships/components/Lobby/SettingsFrame/Setting.tsx b/leaky-ships/components/Lobby/SettingsFrame/Setting.tsx new file mode 100644 index 0000000..d3504af --- /dev/null +++ b/leaky-ships/components/Lobby/SettingsFrame/Setting.tsx @@ -0,0 +1,61 @@ +import { + faToggleLargeOff, + faToggleLargeOn, +} from "@fortawesome/pro-solid-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { useGameProps } from "@hooks/useGameProps" +import classNames from "classnames" +import { ReactNode, useMemo } from "react" + +type GameSettingKeys = + | "allowSpectators" + | "allowSpecials" + | "allowChat" + | "allowMarkDraw" + +export type GameSettings = { [key in GameSettingKeys]?: boolean } + +function Setting({ + children, + props: { prop, gameSetting }, +}: { + children: ReactNode + props: { prop: GameSettingKeys; gameSetting: (payload: GameSettings) => void } +}) { + const { payload } = useGameProps() + const state = useMemo(() => payload?.game?.[prop], [payload?.game, prop]) + + return ( + + ) +} + +export default Setting diff --git a/leaky-ships/components/Lobby/SettingsFrame/Settings.tsx b/leaky-ships/components/Lobby/SettingsFrame/Settings.tsx new file mode 100644 index 0000000..309b277 --- /dev/null +++ b/leaky-ships/components/Lobby/SettingsFrame/Settings.tsx @@ -0,0 +1,85 @@ +import Setting, { GameSettings } from "./Setting" +import { faRotateLeft } from "@fortawesome/pro-regular-svg-icons" +import { faXmark } from "@fortawesome/pro-solid-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { useGameProps } from "@hooks/useGameProps" +import { socket } from "@lib/socket" +import { useCallback } from "react" + +function Settings({ closeSettings }: { closeSettings: () => void }) { + const { setSetting, full } = useGameProps() + + const gameSetting = useCallback( + (payload: GameSettings) => { + const hash = setSetting(payload) + socket.emit("gameSetting", payload, (newHash) => { + if (newHash === hash) return + console.log("hash", hash, newHash) + socket.emit("update", full) + }) + }, + [full, setSetting] + ) + + return ( +
+
+
+
+

+ Settings +

+ +
+
+
+ +
+
+ + Erlaube Zuschauer + + + Erlaube spezial Items + + + Erlaube den Chat + + + Erlaube zeichen/makieren + +
+
+
+
+
+ ) +} + +export default Settings diff --git a/leaky-ships/components/Logo.tsx b/leaky-ships/components/Logo.tsx new file mode 100644 index 0000000..c7e5f5e --- /dev/null +++ b/leaky-ships/components/Logo.tsx @@ -0,0 +1,84 @@ +import classNames from "classnames" +import React from "react" + +function Logo({ small }: { small?: boolean }) { + return ( +
+

+ Leaky + Ships +

+ +
+ ) +} + +function Screws({ small }: { small?: boolean }) { + return ( + <> + + + + + + ) +} + +function Screw({ + orientation, + rotation, + small, +}: { + orientation: string + rotation: string + small?: boolean +}) { + return ( +
+
+
+ ) +} + +export default Logo diff --git a/leaky-ships/components/OptionButton.tsx b/leaky-ships/components/OptionButton.tsx new file mode 100644 index 0000000..f358b8e --- /dev/null +++ b/leaky-ships/components/OptionButton.tsx @@ -0,0 +1,40 @@ +import { + FontAwesomeIcon, + FontAwesomeIconProps, +} from "@fortawesome/react-fontawesome" +import classNames from "classnames" +import { ReactNode } from "react" + +function OptionButton({ + icon, + action, + children, + disabled, +}: { + icon: FontAwesomeIconProps["icon"] + action?: () => void + children: ReactNode + disabled?: boolean +}) { + return ( + + ) +} + +export default OptionButton diff --git a/leaky-ships/components/SocketIO.tsx b/leaky-ships/components/SocketIO.tsx deleted file mode 100644 index 6267cc0..0000000 --- a/leaky-ships/components/SocketIO.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { useEffect } from "react" -import { io } from "socket.io-client" - -function SocketIO() { - useEffect(() => { - socketInitializer() - }, []) - - const socketInitializer = async () => { - await fetch("/api/ws") - - const socket = io() - socket.on("test2", (warst) => { - console.log("Test2:", warst, socket.id) - }) - socket.on("connect", () => { - console.log(socket.connected) // true - setTimeout(() => { - socket.emit("test", "warst") - socket.emit("test", "tsra") - socket.emit("test", "1234") - // socket.disconnect() - }, 1000) - }) - - socket.on("test", () => { - console.log("Got test1234") // false - }) - - socket.on("disconnect", () => { - console.log(socket.connected) // false - }) - } - - return
SocketIO
-} - -export default SocketIO diff --git a/leaky-ships/components/Targets.tsx b/leaky-ships/components/Targets.tsx deleted file mode 100644 index 6388a5b..0000000 --- a/leaky-ships/components/Targets.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from "react" -import { Target } from "../interfaces/frontend" -import GamefieldPointer, { PointerProps } from "./GamefieldPointer" - -function Targets({ - props: { composeTargetTiles, target, targetPreview }, -}: { - props: { - composeTargetTiles: (target: Target) => PointerProps[] - target: Target - targetPreview: Target - } -}) { - return ( - <> - {[ - ...composeTargetTiles(target).map((props, i) => ( - - )), - ...composeTargetTiles(targetPreview).map((props, i) => ( - - )), - ]} - - ) -} - -export default Targets diff --git a/leaky-ships/components/profileImg.tsx b/leaky-ships/components/profileImg.tsx new file mode 100644 index 0000000..c18fa94 --- /dev/null +++ b/leaky-ships/components/profileImg.tsx @@ -0,0 +1,13 @@ +import React from "react" + +function profileImg(src: string) { + return ( + profile picture + ) +} + +export default profileImg diff --git a/leaky-ships/global.d.ts b/leaky-ships/global.d.ts index 1a8523e..4e697e9 100644 --- a/leaky-ships/global.d.ts +++ b/leaky-ships/global.d.ts @@ -1,3 +1,5 @@ -declare module globalThis { +import "@total-typescript/ts-reset" + +declare global { var prismaClient: PrismaClient } diff --git a/leaky-ships/hooks/useDraw.ts b/leaky-ships/hooks/useDraw.ts new file mode 100644 index 0000000..f07b813 --- /dev/null +++ b/leaky-ships/hooks/useDraw.ts @@ -0,0 +1,64 @@ +import { Draw, Point } from "../interfaces/frontend" +import { useEffect, useRef, useState } from "react" + +export const useDraw = ( + onDraw: ({ ctx, currentPoint, prevPoint }: Draw) => void +) => { + const [mouseDown, setMouseDown] = useState(false) + + const canvasRef = useRef(null) + const prevPoint = useRef(null) + + const onMouseDown = () => setMouseDown(true) + + const clear = () => { + const canvas = canvasRef.current + if (!canvas) return + + const ctx = canvas.getContext("2d") + if (!ctx) return + + ctx.clearRect(0, 0, canvas.width, canvas.height) + } + + useEffect(() => { + const handler = (e: MouseEvent) => { + if (!mouseDown) return + const currentPoint = computePointInCanvas(e) + + const ctx = canvasRef.current?.getContext("2d") + if (!ctx || !currentPoint) return + + onDraw({ ctx, currentPoint, prevPoint: prevPoint.current }) + prevPoint.current = currentPoint + } + + const computePointInCanvas = (e: MouseEvent) => { + const canvas = canvasRef.current + if (!canvas) return + + const rect = canvas.getBoundingClientRect() + const x = e.clientX - rect.left + const y = e.clientY - rect.top + + return { x, y } + } + + const mouseUpHandler = () => { + setMouseDown(false) + prevPoint.current = null + } + + // Add event listeners + canvasRef.current?.addEventListener("mousemove", handler) + window.addEventListener("mouseup", mouseUpHandler) + + // Remove event listeners + return () => { + canvasRef.current?.removeEventListener("mousemove", handler) + window.removeEventListener("mouseup", mouseUpHandler) + } + }, [onDraw]) + + return { canvasRef, onMouseDown, clear } +} diff --git a/leaky-ships/hooks/useGameProps.ts b/leaky-ships/hooks/useGameProps.ts new file mode 100644 index 0000000..a778368 --- /dev/null +++ b/leaky-ships/hooks/useGameProps.ts @@ -0,0 +1,138 @@ +import { GameSettings } from "@components/Lobby/SettingsFrame/Setting" +import { getPayloadwithChecksum } from "@lib/getPayloadwithChecksum" +import { socket } from "@lib/socket" +import { + GamePropsSchema, + optionalGamePropsSchema, + PlayerSchema, +} from "@lib/zodSchemas" +import { produce } from "immer" +import { toast } from "react-toastify" +import { create } from "zustand" +import { devtools } from "zustand/middleware" + +const initialState: optionalGamePropsSchema & { + userStates: { + isReady: boolean + isConnected: boolean + }[] +} = { + payload: null, + hash: null, + userStates: Array.from(Array(2), () => ({ + isReady: false, + isConnected: false, + })), +} + +export type State = typeof initialState + +export type Action = { + setSetting: (settings: GameSettings) => string | null + setPlayer: (payload: { users: PlayerSchema[] }) => string | null + full: (newProps: GamePropsSchema) => void + leave: (cb: () => void) => void + setIsReady: (payload: { i: number; isReady: boolean }) => void + setIsConnected: (payload: { i: number; isConnected: boolean }) => void + reset: () => void +} + +export const useGameProps = create()( + devtools( + (set) => ({ + ...initialState, + setPlayer: (payload) => { + let hash: string | null = null + set( + produce((state: State) => { + if (!state.payload) return + state.payload.users = payload.users + const body = getPayloadwithChecksum(state.payload) + if (!body.hash) { + toast.warn("Something is wrong... ", { + toastId: "st_wrong", + theme: "colored", + }) + return + } + hash = body.hash + state.hash = hash + }) + ) + return hash + }, + setSetting: (settings) => { + const payload = JSON.stringify(settings) + let hash: string | null = null + set( + produce((state: State) => { + if (!state.payload?.game) return + Object.assign(state.payload.game, settings) + const body = getPayloadwithChecksum(state.payload) + if (!body.hash) { + toast.warn("Something is wrong... ", { + toastId: "st_wrong", + theme: "colored", + }) + return + } + hash = body.hash + state.hash = hash + }) + ) + return hash + }, + full: (newGameProps) => + set((state) => { + if (state.hash === newGameProps.hash) { + console.log("Everything up to date.") + } else { + console.log("Update was needed.", state.hash, newGameProps.hash) + + if ( + state.payload?.game?.id && + state.payload?.game?.id !== newGameProps.payload?.game?.id + ) { + console.warn( + "Different gameId detected on update: ", + state.payload?.game?.id, + newGameProps.payload?.game?.id + ) + } + + return newGameProps + } + return state + }), + leave: (cb) => { + socket.emit("leave", (ack) => { + if (!ack) { + toast.error("Something is wrong...") + } + cb() + }) + }, + setIsReady: ({ i, isReady }) => + set( + produce((state: State) => { + state.userStates[i].isReady = isReady + state.userStates[i].isConnected = true + }) + ), + setIsConnected: ({ i, isConnected }) => + set( + produce((state: State) => { + state.userStates[i].isConnected = isConnected + if (isConnected) return + state.userStates[i].isReady = false + }) + ), + reset: () => { + set(initialState) + }, + }), + { + name: "gameState", + } + ) +) diff --git a/leaky-ships/hooks/useSocket.ts b/leaky-ships/hooks/useSocket.ts new file mode 100644 index 0000000..83fef0f --- /dev/null +++ b/leaky-ships/hooks/useSocket.ts @@ -0,0 +1,175 @@ +import { useGameProps } from "./useGameProps" +import { socket } from "@lib/socket" +import status from "http-status" +import { useSession } from "next-auth/react" +import { useRouter } from "next/router" +import { useEffect, useMemo, useState } from "react" +import { toast } from "react-toastify" + +/** This function should only be called once per page, otherwise there will be multiple socket connections and duplicate event listeners. */ +function useSocket() { + const [isConnectedState, setIsConnectedState] = useState(false) + const { + payload, + userStates, + setPlayer, + setSetting, + full, + setIsReady, + setIsConnected, + hash: stateHash, + } = useGameProps() + const { data: session } = useSession() + const router = useRouter() + + const { i, isIndex } = useMemo(() => { + const i = payload?.users.findIndex((user) => session?.user?.id === user?.id) + const isIndex = !(i === undefined || i < 0) + if (!isIndex) return { i: undefined, isIndex } + return { i, isIndex } + }, [payload?.users, session?.user?.id]) + + useEffect(() => { + if (!isIndex) return + setIsConnected({ + i, + isConnected: isConnectedState, + }) + }, [i, isConnectedState, isIndex, setIsConnected]) + + useEffect(() => { + if (!session?.user.id) return + socket.connect() + + socket.on("connect", () => { + console.log("connected") + toast.dismiss("connect_error") + setIsConnectedState(true) + }) + + socket.on("connect_error", (error) => { + console.log("Connection error:", error.message) + if (error.message === status["403"]) router.push("/") + if (error.message !== "xhr poll error") return + const toastId = "connect_error" + const isActive = toast.isActive(toastId) + console.log(toastId, isActive) + if (isActive) + toast.update(toastId, { + autoClose: 5000, + }) + else + toast.warn("Es gibt Probleme mit der Echtzeitverbindung.", { toastId }) + }) + + socket.on("gameSetting", (payload, hash, userId) => { + if (userId === session?.user.id) return + const newHash = setSetting(payload) + if (!newHash || newHash === hash) return + console.log("hash", hash, newHash) + socket.emit("update", (body) => { + console.log("update") + full(body) + }) + }) + + socket.on("playerEvent", (event) => { + const { type, i, userId } = event + if (userId === session?.user.id) return + let message: string + console.log(type) + switch (type) { + case "disconnect": + setIsConnected({ + i, + isConnected: false, + }) + message = "Player is disconnected." + break + + case "leave": + message = "Player has left the lobby." + break + + case "connect": + setIsConnected({ + i, + isConnected: true, + }) + socket.emit("isReady", userStates[i].isReady) + message = "Player has joined the lobby." + break + + default: + message = "Not defined yet." + break + } + toast.info(message, { toastId: message }) + if (type === "disconnect") return + const { payload, hash } = event + const newHash = setPlayer(payload) + console.log(newHash, hash, !newHash, newHash === hash) + if (!newHash || newHash === hash) return + console.log("hash", hash, newHash) + socket.emit("update", (body) => { + console.log("update") + full(body) + }) + }) + + socket.on("isReady", (payload, userId) => { + if (userId === session?.user.id) return + setIsReady(payload) + }) + + socket.on("disconnect", () => { + console.log("disconnect") + setIsConnectedState(false) + }) + + return () => { + socket.removeAllListeners() + } + }, [ + full, + i, + router, + session?.user.id, + setIsConnected, + setIsReady, + setPlayer, + setSetting, + stateHash, + ]) + useEffect( + () => + console.log( + i, + isIndex, + userStates[i ?? 0].isConnected, + isConnectedState, + isIndex ? userStates[i].isConnected : isConnectedState, + userStates, + session?.user.id + ), + [i, isIndex, isConnectedState, session?.user.id, userStates] + ) + useEffect(() => console.log("warst", isConnectedState), [isConnectedState]) + + // useEffect(() => { + // if (!isConnected) return + // let count = 0 + // const interval = setInterval(() => { + // const start = Date.now() + // socket.volatile.emit("ping", ++count, (count) => { + // const duration = Date.now() - start + // console.log("ping", count, duration) + // }) + // }, 5000) + // return () => clearInterval(interval) + // }, [isConnected]) + + return { isConnected: isIndex ? userStates[i].isConnected : isConnectedState } +} + +export default useSocket diff --git a/leaky-ships/interfaces/NextApiSocket.ts b/leaky-ships/interfaces/NextApiSocket.ts index 3020036..61bc954 100644 --- a/leaky-ships/interfaces/NextApiSocket.ts +++ b/leaky-ships/interfaces/NextApiSocket.ts @@ -1,10 +1,18 @@ +import { GameSettings } from "@components/Lobby/SettingsFrame/Setting" +import { GamePropsSchema, PlayerSchema } from "@lib/zodSchemas" import type { Server as HTTPServer } from "http" -import type { NextApiResponse } from "next" import type { Socket as NetSocket } from "net" -import type { Server as IOServer } from "socket.io" +import type { NextApiResponse } from "next" +import { Session } from "next-auth" +import type { + Server as IOServer, + Server, + Socket as SocketforServer, +} from "socket.io" +import type { Socket as SocketforClient } from "socket.io-client" interface SocketServer extends HTTPServer { - io?: IOServer | undefined + io?: IOServer } interface SocketWithIO extends NetSocket { @@ -14,3 +22,82 @@ interface SocketWithIO extends NetSocket { export interface NextApiResponseWithSocket extends NextApiResponse { socket: SocketWithIO } + +export interface ServerToClientEvents { + // noArg: () => void + // basicEmit: (a: number, b: string, c: Buffer) => void + // withAck: (d: string, ) => void + gameSetting: (payload: GameSettings, hash: string, userId: string) => void + playerEvent: ( + event: + | { + type: "connect" | "leave" + i: number + payload: { users: PlayerSchema[] } + hash: string + userId: string + } + | { + type: "disconnect" + i: number + userId: string + } + ) => void + isReady: ( + payload: { + i: number + isReady: boolean + }, + userId: string + ) => void + isConnected: ( + payload: { + i: number + isConnected: boolean + }, + userId: string + ) => void +} + +export interface ClientToServerEvents { + update: (callback: (game: GamePropsSchema) => void) => void + isReady: (isReady: boolean) => void + isConnected: (isReady: boolean) => void + ping: (count: number, callback: (count: number) => void) => void + join: (withAck: (ack: boolean) => void) => void + gameSetting: (payload: GameSettings, callback: (hash: string) => void) => void + leave: (withAck: (ack: boolean) => void) => void +} + +interface InterServerEvents { + // ping: () => void +} + +interface SocketData { + props: { + userId: string + gameId: string + index: number + } + user: Session["user"] + gameId: string | null + index: number +} + +export type sServer = Server< + ClientToServerEvents, + ServerToClientEvents, + InterServerEvents, + SocketData +> +export type sSocket = SocketforServer< + ClientToServerEvents, + ServerToClientEvents, + InterServerEvents, + SocketData +> + +export type cSocket = SocketforClient< + ServerToClientEvents, + ClientToServerEvents +> diff --git a/leaky-ships/interfaces/frontend.ts b/leaky-ships/interfaces/frontend.ts index 9d0bb9a..7f74958 100644 --- a/leaky-ships/interfaces/frontend.ts +++ b/leaky-ships/interfaces/frontend.ts @@ -3,7 +3,6 @@ export interface Position { y: number } export interface Target extends Position { - preview: boolean show: boolean } export interface MouseCursor extends Position { @@ -31,12 +30,12 @@ export interface Hit extends Position { } interface fireMissile { - type: "fireMissile" + type: "fireMissile" | "htorpedo" | "vtorpedo" payload: { x: number y: number hit: boolean - } + }[] } interface removeMissile { type: "removeMissile" @@ -48,3 +47,14 @@ interface removeMissile { } export type HitDispatch = fireMissile | removeMissile + +export interface Point { + x: number + y: number +} + +export interface Draw { + ctx: CanvasRenderingContext2D + currentPoint: Point + prevPoint: Point | null +} diff --git a/leaky-ships/lib/backend/components/checkPasswordIsValid.ts b/leaky-ships/lib/backend/components/checkPasswordIsValid.ts deleted file mode 100644 index 55639d5..0000000 --- a/leaky-ships/lib/backend/components/checkPasswordIsValid.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Player } from "@prisma/client" -import bcrypt from "bcrypt" - -export default async function checkPasswordIsValid( - payload: T & { player: Player; password: string } -) { - const { player, password } = payload - - // Validate for correct password - return bcrypt.compare(password, player.passwordHash).then(async (result) => { - if (!result) { - return Promise.reject({ - message: "Passwords do not match!", - statusCode: 401, - solved: true, - }) - } - return { - ...payload, - passwordIsValid: true, - } - }) -} diff --git a/leaky-ships/lib/backend/components/checkTokenIsValid.ts b/leaky-ships/lib/backend/components/checkTokenIsValid.ts deleted file mode 100644 index d24d22e..0000000 --- a/leaky-ships/lib/backend/components/checkTokenIsValid.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Token } from "@prisma/client" -import jwt from "jsonwebtoken" -import jwtVerifyCatch from "../jwtVerifyCatch" - -async function checkTokenIsValid( - payload: T & { token: string; tokenType: Token["type"] } -) { - const { token, tokenType } = payload - - // Verify the token and get the payload - let tokenData: string | jwt.JwtPayload - try { - tokenData = jwt.verify(token, process.env.ACCESS_TOKEN_SECRET as string) - } catch (err: any) { - // Deal with the problem in more detail - return Promise.reject(jwtVerifyCatch(tokenType, err)) - } - // Making sure the token data is not a string (because it should be an object) - if (typeof tokenData === "string") { - return Promise.reject({ - message: tokenType + "-Token data was a string. Token: " + token, - statusCode: 401, - solved: false, - }) - } - - return { ...payload, tokenBody: token, tokenIsValid: true } -} - -export default checkTokenIsValid diff --git a/leaky-ships/lib/backend/components/createAnonymousDB.ts b/leaky-ships/lib/backend/components/createAnonymousDB.ts deleted file mode 100644 index ef83488..0000000 --- a/leaky-ships/lib/backend/components/createAnonymousDB.ts +++ /dev/null @@ -1,28 +0,0 @@ -import prisma from "../../prisma" - -async function createAnonymousDB(payload: T) { - const player = await prisma.player.create({ - data: { - anonymous: true, - }, - }) - // .catch((err: any) => { - // if (err.code === 11000) { - // return Promise.reject({ - // message: `Duplicate key error while creating Player in DB!`, - // statusCode: 409, - // solved: true, - // type: 'warn' - // }) - // } else { - // console.log(err) - // return Promise.reject({ - // message: `Unknown error while creating Player in DB.`, - // solved: false - // }) - // } - // }) - return { ...payload, player } -} - -export default createAnonymousDB diff --git a/leaky-ships/lib/backend/components/createPlayerDB.ts b/leaky-ships/lib/backend/components/createPlayerDB.ts deleted file mode 100644 index e9c9ff2..0000000 --- a/leaky-ships/lib/backend/components/createPlayerDB.ts +++ /dev/null @@ -1,38 +0,0 @@ -import bcrypt from "bcrypt" -import prisma from "../../prisma" - -async function createPlayerDB( - payload: T & { username: string; password: string } -) { - const { username, password } = payload - - return await prisma.player - .create({ - data: { - username, - passwordHash: await bcrypt.hash(password, 10), - anonymous: false, - }, - }) - .then((player) => { - return { ...payload, player } - }) - .catch((err: any) => { - if (err.code === 11000) { - return Promise.reject({ - message: `Duplicate key error while creating Player in DB!`, - statusCode: 409, - solved: true, - type: "warn", - }) - } else { - console.log(err) - return Promise.reject({ - message: `Unknown error while creating Player in DB.`, - solved: false, - }) - } - }) -} - -export default createPlayerDB diff --git a/leaky-ships/lib/backend/components/createTokenDB.ts b/leaky-ships/lib/backend/components/createTokenDB.ts deleted file mode 100644 index 9ded9c4..0000000 --- a/leaky-ships/lib/backend/components/createTokenDB.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Player, Token } from "@prisma/client" -import jwt from "jsonwebtoken" -import { v4 as uuidv4 } from "uuid" -import prisma from "../../prisma" - -const tokenLifetime = { - REFRESH: 172800, - ACCESS: 15, -} - -export default async function createTokenDB( - payload: T & { player: Player; newTokenType: Token["type"] } -) { - const { player, newTokenType } = payload - - // Sign a new access token - const newToken = jwt.sign( - { uuid: uuidv4(), user: player.id }, - process.env.ACCESS_TOKEN_SECRET as string, - { expiresIn: tokenLifetime[newTokenType] } - ) - - // Save token to DB - const newTokenDB = await prisma.token.create({ - data: { - token: newToken, - type: newTokenType, - expires: new Date(Date.now() + tokenLifetime[newTokenType] + "000"), - owner: { - connect: { - id: player.id, - }, - }, - }, - }) - - return { - ...payload, - newToken, - newTokenDB, - } -} diff --git a/leaky-ships/lib/backend/components/getPlayerByIdDB.ts b/leaky-ships/lib/backend/components/getPlayerByIdDB.ts deleted file mode 100644 index a3814cc..0000000 --- a/leaky-ships/lib/backend/components/getPlayerByIdDB.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Token } from "@prisma/client" -import prisma from "../../prisma" - -export default async function getPlayerByIdDB( - payload: T & { tokenDB: Token } -) { - const { tokenDB } = payload - // Find Host in DB if it still exists (just to make sure) - const player = await prisma.player.findUnique({ - where: { - id: tokenDB.ownerId, - }, - }) - if (!player) { - return Promise.reject({ - message: "Player not found in DB!", - statusCode: 401, - solved: false, - }) - } - - return { - ...payload, - player, - } -} diff --git a/leaky-ships/lib/backend/components/getPlayerByNameDB.ts b/leaky-ships/lib/backend/components/getPlayerByNameDB.ts deleted file mode 100644 index 3de1a82..0000000 --- a/leaky-ships/lib/backend/components/getPlayerByNameDB.ts +++ /dev/null @@ -1,32 +0,0 @@ -import prisma from "../../prisma" - -export default async function getPlayerByNameDB( - payload: T & { username: string } -) { - const { username } = payload - // Find Player in DB if it still exists (just to make sure) - const player = await Promise.any([ - prisma.player.findUnique({ - where: { - username: username, - }, - }), - prisma.player.findUnique({ - where: { - email: username, - }, - }), - ]) - if (!player) { - return Promise.reject({ - message: "Player not found in DB!", - statusCode: 401, - solved: false, - }) - } - - return { - ...payload, - player, - } -} diff --git a/leaky-ships/lib/backend/components/getTokenDB.ts b/leaky-ships/lib/backend/components/getTokenDB.ts deleted file mode 100644 index 4c21da4..0000000 --- a/leaky-ships/lib/backend/components/getTokenDB.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { NextApiRequest, NextApiResponse } from "next" -import prisma from "../../prisma" - -async function getTokenDB( - payload: T & { - tokenBody: string - tokenIsValid: boolean - req: NextApiRequest - res: NextApiResponse - } -) { - const { tokenBody } = payload - - // Find refresh token in DB - const tokenDB = await prisma.token.findUnique({ - where: { - token: tokenBody, - }, - }) - if (!tokenDB) { - return Promise.reject({ - message: "Access-Token not found in DB!", - statusCode: 401, - solved: true, - type: "warn", - }) - } - - if (tokenDB.used) { - return Promise.reject({ - message: "DBToken was already used!", - statusCode: 401, - solved: true, - }) - } - - await prisma.token.update({ - where: { - token: tokenBody, - }, - data: { - used: true, - }, - }) - - // await logging('Old token has been invalidated.', ['debug'], req) - - return { - ...payload, - tokenDB, - } -} - -export default getTokenDB diff --git a/leaky-ships/lib/backend/components/getTokenFromBody.ts b/leaky-ships/lib/backend/components/getTokenFromBody.ts deleted file mode 100644 index 2e12e0a..0000000 --- a/leaky-ships/lib/backend/components/getTokenFromBody.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { NextApiRequest } from "next" - -async function getTokenFromBody(payload: T & { req: NextApiRequest }) { - const { req } = payload - const token: string = req.body.token - - // Checking for cookie presens, because it is necessary - if (!token) { - return Promise.reject({ - message: "Unauthorized. No Access-Token.", - statusCode: 401, - solved: true, - }) - } - - return { ...payload, token } -} - -export default getTokenFromBody diff --git a/leaky-ships/lib/backend/components/getTokenFromCookie.ts b/leaky-ships/lib/backend/components/getTokenFromCookie.ts deleted file mode 100644 index 4798e29..0000000 --- a/leaky-ships/lib/backend/components/getTokenFromCookie.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Token } from "@prisma/client" -import { NextApiRequest } from "next" - -async function getTokenFromCookie(payload: T & { req: NextApiRequest }) { - const { req } = payload - const token = req.cookies.token - - // Checking for cookie presens, because it is necessary - if (!token) { - return Promise.reject({ - message: "Unauthorized. No cookie.", - statusCode: 401, - solved: true, - }) - } - - return { ...payload, token, tokenType: "REFRESH" as Token["type"] } -} - -export default getTokenFromCookie diff --git a/leaky-ships/lib/backend/components/loginCheck.ts b/leaky-ships/lib/backend/components/loginCheck.ts deleted file mode 100644 index 4cd9cc2..0000000 --- a/leaky-ships/lib/backend/components/loginCheck.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Token } from "@prisma/client" -import { Logging } from "../logging" - -export default async function loginCheck( - payload: T & { loginCheck: boolean; tokenDB: Token; tokenType: "REFRESH" } -) { - const { loginCheck, tokenDB } = payload - // True login check response - if (loginCheck) { - return Promise.resolve({ - message: "loginCheck " + loginCheck + " of " + tokenDB.id, - body: { loggedIn: true }, - type: ["debug", "info.cyan"] as Logging[], - }) - } - return payload -} diff --git a/leaky-ships/lib/backend/components/sendError.ts b/leaky-ships/lib/backend/components/sendError.ts deleted file mode 100644 index 92db74c..0000000 --- a/leaky-ships/lib/backend/components/sendError.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NextApiRequest, NextApiResponse } from "next" -import logging from "../logging" - -export default function sendError( - req: NextApiRequest, - res: NextApiResponse, - err: any -) { - // If something went wrong, let the client know with status 500 - res.status(err.statusCode ?? 500).end() - logging(err.message, [err.type ?? (err.solved ? "debug" : "error")], req) -} diff --git a/leaky-ships/lib/backend/components/sendResponse.ts b/leaky-ships/lib/backend/components/sendResponse.ts deleted file mode 100644 index 2defd35..0000000 --- a/leaky-ships/lib/backend/components/sendResponse.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { NextApiRequest, NextApiResponse } from "next" -import logging, { Logging } from "../logging" - -export interface Result { - message: string - statusCode?: number - body?: T - type?: Logging[] -} - -export default function sendResponse(payload: { - req: NextApiRequest - res: NextApiResponse - result: Result -}) { - const { req, res, result } = payload - res.status(result.statusCode ?? 200) - result.body ? res.json(result.body) : res.end() - logging(result.message, result.type ?? ["debug"], req) -} diff --git a/leaky-ships/lib/backend/errors.ts b/leaky-ships/lib/backend/errors.ts new file mode 100644 index 0000000..654386e --- /dev/null +++ b/leaky-ships/lib/backend/errors.ts @@ -0,0 +1,24 @@ +import { Logging } from "./logging" + +export interface rejectionError { + message: string + statusCode: number + solved: boolean + type?: Logging[] +} +interface rejectionErrors { + [key: string]: rejectionError +} + +export const rejectionErrors: rejectionErrors = { + gameNotFound: { + message: "Game not found!", + statusCode: 404, + solved: true, + }, + unauthorized: { + message: "Unauthorized", + statusCode: 401, + solved: true, + }, +} diff --git a/leaky-ships/lib/backend/getPinFromBody.ts b/leaky-ships/lib/backend/getPinFromBody.ts new file mode 100644 index 0000000..fdb6722 --- /dev/null +++ b/leaky-ships/lib/backend/getPinFromBody.ts @@ -0,0 +1,24 @@ +import sendError from "./sendError" +import { NextApiRequest, NextApiResponse } from "next" +import { z } from "zod" + +const pinBodySchema = z.object({ + pin: z.string(), +}) + +async function getPinFromBody(req: NextApiRequest, res: NextApiResponse) { + try { + const body = JSON.parse(req.body) + const { pin } = pinBodySchema.parse(body) + return pin + } catch (err: any) { + sendError(req, res, { + message: "No pin in request body!", + statusCode: 401, + solved: true, + type: ["warn"], + }) + } +} + +export default getPinFromBody diff --git a/leaky-ships/lib/backend/jwtVerifyCatch.ts b/leaky-ships/lib/backend/jwtVerifyCatch.ts deleted file mode 100644 index 2354fe0..0000000 --- a/leaky-ships/lib/backend/jwtVerifyCatch.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Token } from "@prisma/client" - -export default async function jwtVerifyCatch( - tokenType: Token["type"], - err: Error -) { - switch (err.message) { - case "jwt expired": - return { - message: `JWT (${tokenType}) expired!`, - statusCode: 403, - solved: true, - type: "warn", - } - - case "invalid signature": - return { - message: `Invalid JWT (${tokenType}) signature! Token: `, - statusCode: 401, - solved: true, - type: "error", - } - - case "jwt must be provided": - return { - message: `No JWT (${tokenType}) given.`, - statusCode: 401, - solved: true, - type: "warn", - } - - default: - console.log(err) - return { message: `Unknown error on 'JWT.verify()'.`, solved: false } - } -} diff --git a/leaky-ships/lib/backend/logging.ts b/leaky-ships/lib/backend/logging.ts index 2869641..82b491b 100644 --- a/leaky-ships/lib/backend/logging.ts +++ b/leaky-ships/lib/backend/logging.ts @@ -1,13 +1,22 @@ -import fs from "fs" import colors, { Color } from "colors" -import { NextApiRequest } from "next" +import fs from "fs" import { IncomingMessage } from "http" +import { NextApiRequest } from "next" + colors.enable() -const loggingTemplates: { [key: string]: LoggingType } = { +const loggingTemplates: { + system: LoggingType + infoGreen: LoggingType + infoCyan: LoggingType + debug: LoggingType + post: LoggingType + warn: LoggingType + error: LoggingType +} = { system: ["SYSTEM", "green"], - "info.green": ["INFO", "green"], - "info.cyan": ["INFO", "cyan"], + infoGreen: ["INFO", "green"], + infoCyan: ["INFO", "cyan"], debug: ["Debug", "grey"], post: ["Post", "white"], warn: ["WARN", "yellow"], @@ -22,7 +31,7 @@ let started: boolean = false async function logStartup() { await fs.promises.stat("log").catch(async () => { await fs.promises.mkdir("log") - await logging(`Created 'log' Folder.`, ["info.cyan", "system"]) + await logging(`Created 'log' Folder.`, ["infoCyan", "system"]) }) started = true } @@ -49,8 +58,11 @@ async function logging( if (req) { const forwardedFor: any = req.headers["x-forwarded-for"] const ip = (forwardedFor || "127.0.0.1, 192.168.178.1").split(",") - messages.console = ip[0].yellow + " - " + messages.console - messages.file = ip[0] + " - " + messages.file + const route = req.url + messages.console = [ip[0].yellow, route?.green, messages.console].join( + " - " + ) + messages.file = [ip[0], route, messages.file].join(" - ") } await fs.promises.appendFile("log/log.txt", messages.file + "\n") console.log(messages.console) diff --git a/leaky-ships/lib/backend/sendError.ts b/leaky-ships/lib/backend/sendError.ts new file mode 100644 index 0000000..36391d5 --- /dev/null +++ b/leaky-ships/lib/backend/sendError.ts @@ -0,0 +1,20 @@ +import { rejectionError } from "./errors" +import logging from "./logging" +import type { NextApiRequest, NextApiResponse } from "next" + +export default function sendError( + req: NextApiRequest, + res: NextApiResponse, + err: rejectionError | Error +) { + // If something went wrong, let the client know with status 500 + res.status("statusCode" in err ? err.statusCode : 500).end() + logging( + err.message, + "type" in err && err.type + ? err.type + : ["solved" in err && err.solved ? "debug" : "error"], + req + ) + if ("name" in err) console.log(err) +} diff --git a/leaky-ships/lib/backend/sendResponse.ts b/leaky-ships/lib/backend/sendResponse.ts new file mode 100644 index 0000000..cc24cc5 --- /dev/null +++ b/leaky-ships/lib/backend/sendResponse.ts @@ -0,0 +1,25 @@ +import logging, { Logging } from "./logging" +import { NextApiRequest, NextApiResponse } from "next" + +export interface Result { + message: string + statusCode?: number + body?: T + type?: Logging[] + redirectUrl?: string +} + +export default function sendResponse( + req: NextApiRequest, + res: NextApiResponse, + result: Result +) { + if (result.redirectUrl) { + res.redirect(result.statusCode ?? 307, result.redirectUrl) + } else { + res.status(result.statusCode ?? 200) + result.body ? res.json(result.body) : res.end() + logging(result.message, result.type ?? ["debug"], req) + } + return "done" as const +} diff --git a/leaky-ships/lib/frontend/checkIsLoggedIn.ts b/leaky-ships/lib/frontend/checkIsLoggedIn.ts deleted file mode 100644 index 040a28e..0000000 --- a/leaky-ships/lib/frontend/checkIsLoggedIn.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { GetServerSidePropsContext, PreviewData } from "next" -import { ParsedUrlQuery } from "querystring" -import getTokenFromCookie from "../backend/components/getTokenFromCookie" -import checkTokenIsValid from "../backend/components/checkTokenIsValid" -import getTokenDB from "../backend/components/getTokenDB" -import getPlayerByIdDB from "../backend/components/getPlayerByIdDB" -import logging from "../backend/logging" - -export default async function checkIsLoggedIn( - context: GetServerSidePropsContext -) { - const req: any = context.req - const res: any = context.res - - const isLoggedIn = await getTokenFromCookie({ req, res }) - .then(checkTokenIsValid) - .then(getTokenDB) - .then(getPlayerByIdDB) - .then(({ player }) => !!player) - .catch(() => false) - - logging( - "loginCheck " + (isLoggedIn ? true : "-> loggedIn: " + false), - ["debug", "info.cyan"], - req - ) - - return isLoggedIn -} diff --git a/leaky-ships/lib/frontend/getAccessToken.ts b/leaky-ships/lib/frontend/getAccessToken.ts deleted file mode 100644 index 00105ea..0000000 --- a/leaky-ships/lib/frontend/getAccessToken.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default function getAccessToken(): Promise { - return fetch("/api/auth", { - method: "GET", - }) - .then((res) => res.json()) - .then((res) => res.newAccessToken) -} diff --git a/leaky-ships/lib/getPayloadwithChecksum.ts b/leaky-ships/lib/getPayloadwithChecksum.ts new file mode 100644 index 0000000..5b6b1bd --- /dev/null +++ b/leaky-ships/lib/getPayloadwithChecksum.ts @@ -0,0 +1,10 @@ +import { GamePropsSchema } from "./zodSchemas" +import crypto from "crypto" + +export function getPayloadwithChecksum( + payload: GamePropsSchema["payload"] +): GamePropsSchema { + const objString = JSON.stringify(payload) + const hash = crypto.createHash("md5").update(objString).digest("hex") + return { payload, hash } +} diff --git a/leaky-ships/lib/hooks/useGameEvent.ts b/leaky-ships/lib/hooks/useGameEvent.ts deleted file mode 100644 index 64f28cd..0000000 --- a/leaky-ships/lib/hooks/useGameEvent.ts +++ /dev/null @@ -1,222 +0,0 @@ -import { useCallback, useEffect, useMemo, useReducer, useState } from "react" -import { - hitReducer, - initlialLastLeftTile, - initlialTarget, - initlialTargetPreview, - initlialMouseCursor, -} from "../utils/helpers" -import { - Hit, - Mode, - MouseCursor, - Target, - Position, -} from "../../interfaces/frontend" -import { PointerProps } from "../../components/GamefieldPointer" - -const modes: Mode[] = [ - { - pointerGrid: Array.from(Array(3), () => Array.from(Array(3))), - type: "radar", - }, - { - pointerGrid: Array.from(Array(3), () => Array.from(Array(1))), - type: "htorpedo", - }, - { - pointerGrid: Array.from(Array(1), () => Array.from(Array(3))), - type: "vtorpedo", - }, - { pointerGrid: [[{ x: 0, y: 0 }]], type: "missile" }, -] - -function useGameEvent(count: number) { - const [lastLeftTile, setLastLeftTile] = - useState(initlialLastLeftTile) - const [target, setTarget] = useState(initlialTarget) - const [eventReady, setEventReady] = useState(false) - const [appearOK, setAppearOK] = useState(false) - const [targetPreview, setTargetPreview] = useState( - initlialTargetPreview - ) - const [mouseCursor, setMouseCursor] = - useState(initlialMouseCursor) - const [hits, DispatchHits] = useReducer(hitReducer, [] as Hit[]) - const [mode, setMode] = useState(0) - - const targetList = useCallback( - (target: Position) => { - const { pointerGrid, type } = modes[mode] - const xLength = pointerGrid.length - const yLength = pointerGrid[0].length - const { x: targetX, y: targetY } = target - return pointerGrid - .map((arr, i) => { - return arr.map((_, i2) => { - const relativeX = -Math.floor(xLength / 2) + i - const relativeY = -Math.floor(yLength / 2) + i2 - const x = targetX + (relativeX ?? 0) - const y = targetY + (relativeY ?? 0) - return { - x, - y, - type, - edges: [ - i === 0 ? "left" : "", - i === xLength - 1 ? "right" : "", - i2 === 0 ? "top" : "", - i2 === yLength - 1 ? "bottom" : "", - ], - } - }) - }) - .reduce((prev, curr) => [...prev, ...curr], []) - }, - [mode] - ) - - const isHit = useCallback( - (x: number, y: number) => { - return hits.filter((h) => h.x === x && h.y === y) - }, - [hits] - ) - - const settingTarget = useCallback( - (isGameTile: boolean, x: number, y: number) => { - if (!isGameTile || isHit(x, y).length) return - setMouseCursor((e) => ({ ...e, shouldShow: false })) - setTarget((t) => { - if (t.x === x && t.y === y && t.show) { - DispatchHits({ - type: "fireMissile", - payload: { hit: (x + y) % 2 !== 0, x, y }, - }) - return { preview: false, show: false, x, y } - } else { - const target = { preview: false, show: true, x, y } - const hasAnyBorder = targetList(target).filter(({ x, y }) => - isBorder(x, y, count) - ).length - if (hasAnyBorder) return t - return target - } - }) - }, - [count, isHit, targetList] - ) - - const isSet = useCallback( - (x: number, y: number) => { - return ( - !!targetList(target).filter((field) => x === field.x && y === field.y) - .length && target.show - ) - }, - [target, targetList] - ) - - const composeTargetTiles = useCallback( - (target: Target): PointerProps[] => { - const { preview, show } = target - const result = targetList(target).map(({ x, y, type, edges }) => { - return { - preview, - x, - y, - show, - type, - edges, - imply: !!isHit(x, y).length || (!!isSet(x, y) && preview), - } - }) - return result - }, - [isHit, isSet, targetList] - ) - - // handle visibility and position change of targetPreview - useEffect(() => { - const { show, x, y } = targetPreview - // if mouse has moved too quickly and last event was entering and leaving the same field, it must have gone outside the grid - const hasLeft = x === lastLeftTile.x && y === lastLeftTile.y - const isSet = x === target.x && y === target.y && target.show - - if (show && !appearOK) setTargetPreview((e) => ({ ...e, show: false })) - if ( - !show && - mouseCursor.shouldShow && - eventReady && - appearOK && - !isHit(x, y).length && - !isSet && - !hasLeft - ) - setTargetPreview((e) => ({ ...e, show: true })) - }, [ - targetPreview, - mouseCursor.shouldShow, - isHit, - eventReady, - appearOK, - lastLeftTile, - target, - ]) - - // enable targetPreview event again after 200 ms. - useEffect(() => { - setEventReady(false) - const previewTarget = { x: mouseCursor.x, y: mouseCursor.y } - const hasAnyBorder = targetList(previewTarget).filter(({ x, y }) => - isBorder(x, y, count) - ).length - if (targetPreview.show || !appearOK || hasAnyBorder) return - const autoTimeout = setTimeout(() => { - setTargetPreview((e) => ({ ...e, ...previewTarget })) - setEventReady(true) - setAppearOK(true) - }, 300) - - // or abort if state has changed early - return () => { - clearTimeout(autoTimeout) - } - }, [ - appearOK, - count, - mouseCursor.x, - mouseCursor.y, - targetList, - targetPreview.show, - ]) - - // approve targetPreview new position after 200 mil. sec. - useEffect(() => { - // early return to start cooldown only when about to show up - const autoTimeout = setTimeout( - () => { - setAppearOK(!targetPreview.show) - }, - targetPreview.show ? 500 : 300 - ) - - // or abort if movement is repeated early - return () => { - clearTimeout(autoTimeout) - } - }, [targetPreview.show]) - - return { - tilesProps: { count, settingTarget, setMouseCursor, setLastLeftTile }, - pointersProps: { composeTargetTiles, target, targetPreview }, - targetsProps: { setMode, setTarget }, - hits, - } -} - -function isBorder(x: number, y: number, count: number) { - return x < 2 || x > count + 1 || y < 2 || y > count + 1 -} - -export default useGameEvent diff --git a/leaky-ships/lib/socket.ts b/leaky-ships/lib/socket.ts new file mode 100644 index 0000000..cd10517 --- /dev/null +++ b/leaky-ships/lib/socket.ts @@ -0,0 +1,7 @@ +import { cSocket } from "../interfaces/NextApiSocket" +import { io } from "socket.io-client" + +export const socket: cSocket = io({ + path: "/api/ws", + autoConnect: false, +}) diff --git a/leaky-ships/lib/utils/helpers.ts b/leaky-ships/lib/utils/helpers.ts index 1c51fa7..7dd5308 100644 --- a/leaky-ships/lib/utils/helpers.ts +++ b/leaky-ships/lib/utils/helpers.ts @@ -1,4 +1,13 @@ -import { Hit, HitDispatch } from "../../interfaces/frontend" +import type { + Hit, + HitDispatch, + Mode, + Position, + Target, + TargetList, +} from "../../interfaces/frontend" +import { count } from "@components/Gamefield/Gamefield" +import { PointerProps } from "@components/Gamefield/GamefieldPointer" export function borderCN(count: number, x: number, y: number) { if (x === 0) return "left" @@ -19,8 +28,10 @@ export function fieldIndex(count: number, x: number, y: number) { } export function hitReducer(formObject: Hit[], action: HitDispatch) { switch (action.type) { - case "fireMissile": { - const result = [...formObject, action.payload] + case "fireMissile": + case "htorpedo": + case "vtorpedo": { + const result = [...formObject, ...action.payload] return result } @@ -28,10 +39,92 @@ export function hitReducer(formObject: Hit[], action: HitDispatch) { return formObject } } -export const initlialLastLeftTile = { - x: 0, - y: 0, + +const modes: Mode[] = [ + { + pointerGrid: Array.from(Array(3), () => Array.from(Array(3))), + type: "radar", + }, + { + pointerGrid: Array.from(Array(3), () => Array.from(Array(1))), + type: "htorpedo", + }, + { + pointerGrid: Array.from(Array(1), () => Array.from(Array(3))), + type: "vtorpedo", + }, + { + pointerGrid: Array.from(Array(1), () => Array.from(Array(1))), + type: "missile", + }, +] + +function isBorder(x: number, y: number, count: number) { + return x < 2 || x > count + 1 || y < 2 || y > count + 1 } + +export function isAlreadyHit(x: number, y: number, hits: Hit[]) { + return !!hits.filter((h) => h.x === x && h.y === y).length +} + +function isSet(x: number, y: number, targetList: TargetList[], show: boolean) { + return ( + !!targetList.filter((field) => x === field.x && y === field.y).length && + show + ) +} + +export function targetList( + { x: targetX, y: targetY }: Position, + mode: number +): TargetList[] { + const { pointerGrid, type } = modes[mode] + const xLength = pointerGrid.length + const yLength = pointerGrid[0].length + return pointerGrid + .map((arr, i) => { + return arr.map((_, i2) => { + const relativeX = -Math.floor(xLength / 2) + i + const relativeY = -Math.floor(yLength / 2) + i2 + const x = targetX + (relativeX ?? 0) + const y = targetY + (relativeY ?? 0) + return { + x, + y, + type, + edges: [ + i === 0 ? "left" : "", + i === xLength - 1 ? "right" : "", + i2 === 0 ? "top" : "", + i2 === yLength - 1 ? "bottom" : "", + ], + } + }) + }) + .reduce((prev, curr) => [...prev, ...curr], []) +} + +export function overlapsWithAnyBorder(target: Position, mode: number) { + return !!targetList(target, mode).filter(({ x, y }) => isBorder(x, y, count)) + .length +} + +export function composeTargetTiles( + target: Target, + mode: number, + hits: Hit[] +): PointerProps[] { + const { show } = target + return targetList(target, mode).map((targetItem) => { + const { x, y } = targetItem + return { + ...targetItem, + show, + imply: isAlreadyHit(x, y, hits), + } + }) +} + export const initlialTarget = { preview: false, show: false, diff --git a/leaky-ships/lib/zodSchemas.ts b/leaky-ships/lib/zodSchemas.ts new file mode 100644 index 0000000..4556bf8 --- /dev/null +++ b/leaky-ships/lib/zodSchemas.ts @@ -0,0 +1,53 @@ +import { GameState } from "@prisma/client" +import { z } from "zod" + +export const PlayerSchema = z + .object({ + id: z.string(), + name: z.string().nullable(), + index: z.number(), + chats: z + .object({ + id: z.string(), + event: z.string().nullable(), + message: z.string().nullable(), + createdAt: z.coerce.date(), + }) + .array(), + moves: z + .object({ + id: z.string(), + index: z.number(), + }) + .array(), + }) + .nullable() + +export type PlayerSchema = z.infer + +export const CreateSchema = z.object({ + game: z + .object({ + id: z.string(), + state: z.nativeEnum(GameState), + allowSpectators: z.boolean(), + allowSpecials: z.boolean(), + allowChat: z.boolean(), + allowMarkDraw: z.boolean(), + }) + .nullable(), + gamePin: z.string().nullable(), + users: PlayerSchema.array(), +}) + +export const GamePropsSchema = z.object({ + payload: CreateSchema, + hash: z.string(), +}) +export const optionalGamePropsSchema = z.object({ + payload: CreateSchema.nullable(), + hash: z.string().nullable(), +}) + +export type GamePropsSchema = z.infer +export type optionalGamePropsSchema = z.infer diff --git a/leaky-ships/package.json b/leaky-ships/package.json index 8f011dd..a15fddb 100644 --- a/leaky-ships/package.json +++ b/leaky-ships/package.json @@ -9,46 +9,52 @@ "lint": "next lint" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.2.1", - "@fortawesome/pro-duotone-svg-icons": "^6.2.1", - "@fortawesome/pro-light-svg-icons": "^6.2.1", - "@fortawesome/pro-regular-svg-icons": "^6.2.1", - "@fortawesome/pro-solid-svg-icons": "^6.2.1", - "@fortawesome/pro-thin-svg-icons": "^6.2.1", + "@fortawesome/fontawesome-svg-core": "^6.4.0", + "@fortawesome/pro-duotone-svg-icons": "^6.4.0", + "@fortawesome/pro-light-svg-icons": "^6.4.0", + "@fortawesome/pro-regular-svg-icons": "^6.4.0", + "@fortawesome/pro-solid-svg-icons": "^6.4.0", + "@fortawesome/pro-thin-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", - "@fortawesome/sharp-solid-svg-icons": "^6.2.1", + "@fortawesome/sharp-solid-svg-icons": "^6.4.0", + "@next-auth/prisma-adapter": "^1.0.7", "@next/font": "13.1.1", - "@prisma/client": "^4.9.0", - "bcrypt": "^5.1.0", + "@prisma/client": "^4.15.0", "classnames": "^2.3.2", "colors": "^1.4.0", - "cookies-next": "^2.1.1", "eslint": "8.31.0", "eslint-config-next": "13.1.1", - "jsonwebtoken": "^9.0.0", + "http-status": "^1.6.2", + "immer": "^10.0.2", "next": "13.1.1", - "prisma": "^4.9.0", + "next-auth": "^4.22.1", + "nodemailer": "^6.9.3", + "prisma": "^4.15.0", "react": "18.2.0", "react-dom": "18.2.0", - "socket.io": "^4.5.4", - "socket.io-client": "^4.5.4", + "react-otp-input": "^3.0.2", + "react-toastify": "^9.1.3", + "socket.io": "^4.6.2", + "socket.io-client": "^4.6.2", "typescript": "4.9.4", - "uuid": "^9.0.0" + "unique-names-generator": "^4.7.1", + "zod": "3.21.1", + "zod-prisma-types": "^2.7.1", + "zustand": "^4.3.8" }, "devDependencies": { - "@types/bcrypt": "^5.0.0", - "@types/jsonwebtoken": "^9.0.1", - "@types/node": "^18.11.18", - "@types/react": "^18.0.27", - "@types/react-dom": "^18.0.10", - "@types/uuid": "^9.0.0", + "@total-typescript/ts-reset": "^0.3.7", + "@trivago/prettier-plugin-sort-imports": "^4.1.1", + "@types/node": "^18.16.16", + "@types/react": "^18.2.8", + "@types/react-dom": "^18.2.4", "@types/web-bluetooth": "^0.0.16", - "autoprefixer": "^10.4.13", - "eslint-config-prettier": "^8.6.0", - "postcss": "^8.4.21", - "prettier": "^2.8.3", - "prettier-plugin-tailwindcss": "^0.2.2", - "sass": "^1.57.1", - "tailwindcss": "^3.2.4" + "autoprefixer": "^10.4.14", + "eslint-config-prettier": "^8.8.0", + "postcss": "^8.4.24", + "prettier": "^2.8.8", + "prettier-plugin-tailwindcss": "^0.2.8", + "sass": "^1.62.1", + "tailwindcss": "^3.3.2" } } diff --git a/leaky-ships/pages/_app.tsx b/leaky-ships/pages/_app.tsx index b439e1a..97c6cf2 100644 --- a/leaky-ships/pages/_app.tsx +++ b/leaky-ships/pages/_app.tsx @@ -1,10 +1,21 @@ import "../styles/App.scss" -import "../styles/grid.scss" +import "../styles/globals.scss" import "../styles/grid2.scss" -import "../styles/homepage.scss" -import "../styles/globals.css" +import "../styles/grid.scss" +import "@fortawesome/fontawesome-svg-core/styles.css" +import { SessionProvider } from "next-auth/react" import type { AppProps } from "next/app" +import { ToastContainer } from "react-toastify" +import "react-toastify/dist/ReactToastify.css" -export default function App({ Component, pageProps }: AppProps) { - return +export default function App({ + Component, + pageProps: { session, ...pageProps }, +}: AppProps) { + return ( + + + + + ) } diff --git a/leaky-ships/pages/api/auth.ts b/leaky-ships/pages/api/auth.ts deleted file mode 100644 index fefcdda..0000000 --- a/leaky-ships/pages/api/auth.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { NextApiRequest, NextApiResponse } from "next" -import getTokenFromCookie from "../../lib/backend/components/getTokenFromCookie" -import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid" -import getTokenDB from "../../lib/backend/components/getTokenDB" -import getPlayerByIdDB from "../../lib/backend/components/getPlayerByIdDB" -import createTokenDB from "../../lib/backend/components/createTokenDB" -import sendResponse from "../../lib/backend/components/sendResponse" -import sendError from "../../lib/backend/components/sendError" -import { Logging } from "../../lib/backend/logging" -import { Token } from "@prisma/client" - -interface Data { - token: string -} - -export default async function auth( - req: NextApiRequest, - res: NextApiResponse -) { - return getTokenFromCookie({ - req, - res, - newTokenType: "ACCESS" as Token["type"], - }) - .then(checkTokenIsValid) - .then(getTokenDB) - .then(getPlayerByIdDB) - .then(createTokenDB) - .then(authResponse) - .then(sendResponse) - .catch((err) => sendError(req, res, err)) -} - -async function authResponse(payload: { - newToken: string - newTokenDB: Token - tokenDB: Token - req: NextApiRequest - res: NextApiResponse -}) { - const { newToken, newTokenDB, tokenDB, req, res } = payload - - // Successfull response - return { - req, - res, - result: { - message: - "Access-Token generated: " + - newTokenDB.id + - " with Refreshtoken-Token: " + - tokenDB.id, - body: { token: newToken }, - type: ["debug", "info.cyan"] as Logging[], - }, - } -} diff --git a/leaky-ships/pages/api/auth/[...nextauth].ts b/leaky-ships/pages/api/auth/[...nextauth].ts new file mode 100644 index 0000000..10ff3dc --- /dev/null +++ b/leaky-ships/pages/api/auth/[...nextauth].ts @@ -0,0 +1,56 @@ +import prisma from "@lib/prisma" +import { PrismaAdapter } from "@next-auth/prisma-adapter" +import { NextApiHandler } from "next" +import NextAuth, { NextAuthOptions } from "next-auth" +import AzureADProvider from "next-auth/providers/azure-ad" +import EmailProvider from "next-auth/providers/email" +import { + uniqueNamesGenerator, + Config, + animals, + NumberDictionary, +} from "unique-names-generator" + +const numberDictionary = NumberDictionary.generate({ min: 0, max: 9999 }) +const customConfig: Config = { + dictionaries: [animals, numberDictionary], + separator: " ", + style: "capital", + length: 2, +} + +const options: NextAuthOptions = { + providers: [ + EmailProvider({ + server: process.env.EMAIL_SERVER, + from: process.env.EMAIL_FROM, + }), + AzureADProvider({ + clientId: process.env.AZURE_AD_CLIENT_ID ?? "", + clientSecret: process.env.AZURE_AD_CLIENT_SECRET ?? "", + tenantId: process.env.AZURE_AD_TENANT_ID, + }), + ], + adapter: PrismaAdapter(prisma), + secret: process.env.SECRET, + callbacks: { + signIn: ({ user, account }) => { + // Custom signIn callback to add username to email provider + if (account && account.provider === "email") { + user.name = uniqueNamesGenerator(customConfig) // Replace with your desired username + } + return true + }, + session: ({ session, user }) => { + if (session?.user) { + session.user.id = user.id + } + return session + }, + }, +} + +export { options as authOptions } + +const authHandler: NextApiHandler = (req, res) => NextAuth(req, res, options) +export default authHandler diff --git a/leaky-ships/pages/api/data.ts b/leaky-ships/pages/api/data.ts deleted file mode 100644 index 46c542a..0000000 --- a/leaky-ships/pages/api/data.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { NextApiRequest, NextApiResponse } from "next" -import getTokenFromBody from "../../lib/backend/components/getTokenFromBody" -import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid" -import getTokenDB from "../../lib/backend/components/getTokenDB" -import getPlayerByIdDB from "../../lib/backend/components/getPlayerByIdDB" -import sendResponse from "../../lib/backend/components/sendResponse" -import sendError from "../../lib/backend/components/sendError" -import { Logging } from "../../lib/backend/logging" -import { Game, Player, Token } from "@prisma/client" - -interface Data { - games: Game[] -} - -export default async function data( - req: NextApiRequest, - res: NextApiResponse -) { - return getTokenFromBody({ req, res, tokenType: "ACCESS" as Token["type"] }) - .then(checkTokenIsValid) - .then(getTokenDB) - .then(getPlayerByIdDB) - .then(dataResponse) - .then(sendResponse) - .catch((err) => sendError(req, res, err)) -} - -async function dataResponse(payload: { - player: Player - tokenDB: Token - // games: Game[], - req: NextApiRequest - res: NextApiResponse -}) { - const { player, tokenDB, req, res } = payload - - const games: any = {} - // Successfull response - return { - req, - res, - result: { - message: - "Requested data of user: " + - player.id + - " with Access-Token: " + - tokenDB.id, - body: { games }, - type: ["debug", "info.cyan"] as Logging[], - }, - } -} diff --git a/leaky-ships/pages/api/game/[id].ts b/leaky-ships/pages/api/game/[id].ts new file mode 100644 index 0000000..b826263 --- /dev/null +++ b/leaky-ships/pages/api/game/[id].ts @@ -0,0 +1,46 @@ +import { authOptions } from "../auth/[...nextauth]" +import { rejectionErrors } from "@lib/backend/errors" +import sendResponse from "@lib/backend/sendResponse" +import prisma from "@lib/prisma" +import { Game } from "@prisma/client" +import type { NextApiRequest, NextApiResponse } from "next" +import { getServerSession } from "next-auth" + +interface Data { + game: Game +} + +export default async function id( + req: NextApiRequest, + res: NextApiResponse +) { + const gameId = req.query.id + const session = await getServerSession(req, res, authOptions) + + if (!session?.user || typeof gameId !== "string") { + return sendResponse(req, res, rejectionErrors.unauthorized) + } + + let game: Game | null + switch (req.method) { + case "DELETE": + game = await prisma.game.delete({ + where: { id: gameId }, + }) + break + + default: + game = await prisma.game.findFirst({ + where: { id: gameId }, + }) + } + + if (!game) { + return sendResponse(req, res, rejectionErrors.gameNotFound) + } + + sendResponse(req, res, { + message: "Here is the game.", + body: { game }, + }) +} diff --git a/leaky-ships/pages/api/game/create.ts b/leaky-ships/pages/api/game/create.ts new file mode 100644 index 0000000..c7d6931 --- /dev/null +++ b/leaky-ships/pages/api/game/create.ts @@ -0,0 +1,66 @@ +import { authOptions } from "../auth/[...nextauth]" +import { composeBody, gameSelects, getAnyRunningGame } from "./running" +import sendResponse from "@backend/sendResponse" +import { rejectionErrors } from "@lib/backend/errors" +import prisma from "@lib/prisma" +import { GamePropsSchema } from "@lib/zodSchemas" +import type { NextApiRequest, NextApiResponse } from "next" +import { getServerSession } from "next-auth" + +export default async function create( + req: NextApiRequest, + res: NextApiResponse +) { + const session = await getServerSession(req, res, authOptions) + + if (!session?.user) { + return sendResponse(req, res, rejectionErrors.unauthorized) + } + const { email, id } = session.user + + // Generate a random 4-digit code + const pin = Math.floor(Math.random() * 10000) + .toString() + .padStart(4, "0") + + let created = false + + let game = await getAnyRunningGame(id) + if (game) { + return sendResponse(req, res, { + redirectUrl: "/api/game/running", + message: "Running game already exists.", + }) + } else { + game = await prisma.game.create({ + data: { + gamePin: { + create: { + pin, + }, + }, + users: { + create: { + userId: id, + index: 1, + chats: { + create: { + event: "created", + }, + }, + }, + }, + }, + ...gameSelects, + }) + } + + const body = composeBody(game) + + return sendResponse(req, res, { + message: `User <${email}> created game: ${game.id}`, + statusCode: created ? 201 : 200, + body, + type: ["debug", "infoCyan"], + }) +} diff --git a/leaky-ships/pages/api/game/join.ts b/leaky-ships/pages/api/game/join.ts new file mode 100644 index 0000000..dcd7307 --- /dev/null +++ b/leaky-ships/pages/api/game/join.ts @@ -0,0 +1,89 @@ +import { authOptions } from "../auth/[...nextauth]" +import running, { composeBody, gameSelects } from "./running" +import sendError from "@backend/sendError" +import sendResponse from "@backend/sendResponse" +import { rejectionErrors } from "@lib/backend/errors" +import getPinFromBody from "@lib/backend/getPinFromBody" +import logging from "@lib/backend/logging" +import prisma from "@lib/prisma" +import { GamePropsSchema } from "@lib/zodSchemas" +import type { NextApiRequest, NextApiResponse } from "next" +import { getServerSession } from "next-auth" + +export default async function join( + req: NextApiRequest, + res: NextApiResponse +) { + const session = await getServerSession(req, res, authOptions) + const pin = await getPinFromBody(req, res) + + if (!session?.user) { + return sendResponse(req, res, rejectionErrors.unauthorized) + } + + const { email, id } = session.user + + try { + const game = await prisma.game.findFirst({ + where: { + gamePin: { + pin, + }, + }, + }) + if (!game) { + return sendResponse(req, res, { + message: "Spiel existiert nicht", + statusCode: 404, + type: ["infoCyan"], + }) + } + + const games = await prisma.game.findMany({ + where: { + NOT: { + state: "ended", + }, + users: { + some: { + userId: id, + }, + }, + }, + ...gameSelects, + }) + if (games.length) { + return sendResponse(req, res, { + message: "Spieler ist bereits in Spiel!", + statusCode: 409, + type: ["infoCyan"], + }) + } + + const user_Game = await prisma.user_Game.create({ + data: { + gameId: game.id, + userId: id, + index: 2, + }, + select: { + game: gameSelects, + }, + }) + + const body = composeBody(user_Game.game) + + return sendResponse(req, res, { + message: `User <${email}> joined game: ${game.id}`, + body, + type: ["debug", "infoCyan"], + }) + } catch (err: any) { + await logging( + "HERE".red + err.code + err.meta + err.message, + ["error"], + req + ) + throw sendError(req, res, rejectionErrors.gameNotFound) + } +} diff --git a/leaky-ships/pages/api/game/running.ts b/leaky-ships/pages/api/game/running.ts new file mode 100644 index 0000000..abaa08c --- /dev/null +++ b/leaky-ships/pages/api/game/running.ts @@ -0,0 +1,129 @@ +import { authOptions } from "../auth/[...nextauth]" +import sendResponse from "@backend/sendResponse" +import { rejectionErrors } from "@lib/backend/errors" +import { getPayloadwithChecksum } from "@lib/getPayloadwithChecksum" +import prisma from "@lib/prisma" +import { GamePropsSchema } from "@lib/zodSchemas" +import type { NextApiRequest, NextApiResponse } from "next" +import { getServerSession } from "next-auth" + +export const gameSelects = { + select: { + id: true, + allowChat: true, + allowMarkDraw: true, + allowSpecials: true, + allowSpectators: true, + state: true, + gamePin: { + select: { + pin: true, + }, + }, + users: { + select: { + id: true, + index: true, + chats: { + select: { + id: true, + event: true, + message: true, + createdAt: true, + }, + }, + moves: { + select: { + id: true, + index: true, + }, + }, + user: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, +} + +export const getAnyGame = (gameId: string) => { + const game = prisma.game.findFirst({ + where: { + NOT: { + state: "ended", + }, + id: gameId, + }, + ...gameSelects, + }) + return game +} + +export const getAnyRunningGame = (userId: string) => { + const game = prisma.game.findFirst({ + where: { + NOT: { + state: "ended", + }, + users: { + some: { + userId, + }, + }, + }, + ...gameSelects, + }) + return game +} + +export function composeBody( + gameDB: NonNullable>> +): GamePropsSchema { + const { gamePin, ...game } = gameDB + const users = gameDB.users + .map(({ user, ...props }) => ({ + ...props, + ...user, + })) + .sort((user1, user2) => user1.index - user2.index) + const payload = { + game: game, + gamePin: gamePin?.pin ?? null, + users, + } + return getPayloadwithChecksum(payload) +} + +export default async function running( + req: NextApiRequest, + res: NextApiResponse +) { + const session = await getServerSession(req, res, authOptions) + + if (!session?.user) { + return sendResponse(req, res, rejectionErrors.unauthorized) + } + + const { email, id } = session.user + + const game = await getAnyRunningGame(id) + + if (!game) + return sendResponse(req, res, { + message: `User <${email}> is in no game.`, + statusCode: 204, + type: ["debug", "infoCyan"], + }) + + const body = composeBody(game) + + return sendResponse(req, res, { + message: `User <${email}> asked for game: ${game.id}`, + statusCode: 200, + body, + type: ["debug", "infoCyan"], + }) +} diff --git a/leaky-ships/pages/api/login.ts b/leaky-ships/pages/api/login.ts deleted file mode 100644 index 7662533..0000000 --- a/leaky-ships/pages/api/login.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { NextApiRequest, NextApiResponse } from "next" -import logging, { Logging } from "../../lib/backend/logging" -import getPlayerByNameDB from "../../lib/backend/components/getPlayerByNameDB" -import checkPasswordIsValid from "../../lib/backend/components/checkPasswordIsValid" -import createTokenDB from "../../lib/backend/components/createTokenDB" -import sendResponse from "../../lib/backend/components/sendResponse" -import sendError from "../../lib/backend/components/sendError" -import { setCookie } from "cookies-next" -import { Player, Token } from "@prisma/client" -import prisma from "../../lib/prisma" - -interface Data { - loggedIn: boolean -} - -export default async function login( - req: NextApiRequest, - res: NextApiResponse -) { - const { username, password } = req.body - return preCheck({ - req, - res, - username, - password, - newTokenType: "REFRESH" as Token["type"], - }) - .then(getPlayerByNameDB) - .then(checkPasswordIsValid) - .then(createTokenDB) - .then(loginResponse) - .then(sendResponse) - .catch((err) => sendError(req, res, err)) -} - -async function preCheck( - payload: T & { - req: NextApiRequest - res: NextApiResponse - } -) { - const { req } = payload - const oldRefreshToken = req.cookies.token - // Check for old cookie, if unused invalidate it - const oldDBToken = await prisma.token.findUnique({ - where: { - token: oldRefreshToken, - }, - }) - if (oldDBToken?.used) { - await prisma.token.update({ - where: { - token: oldRefreshToken, - }, - data: { - used: true, - }, - }) - await logging("Old token has been invalidated.", ["debug"], req) - } - return { ...payload, noCookiePresent: true } -} - -async function loginResponse(payload: { - player: Player - passwordIsValid: boolean - refreshToken: string - refreshTokenDB: Token - req: NextApiRequest - res: NextApiResponse -}) { - const { player, refreshToken, refreshTokenDB, req, res } = payload - - // Set login cookie - setCookie("token", refreshToken, { - req, - res, - maxAge: 172800000, - httpOnly: true, - sameSite: true, - secure: true, - }) - - // Successfull response - return { - req, - res, - result: { - message: - "User " + - player.id + - " logged in and generated Refresh-Token: " + - refreshTokenDB.id, - body: { loggedIn: true }, - type: ["debug", "info.cyan"] as Logging[], - }, - } -} diff --git a/leaky-ships/pages/api/logout.ts b/leaky-ships/pages/api/logout.ts deleted file mode 100644 index 98b010c..0000000 --- a/leaky-ships/pages/api/logout.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { NextApiRequest, NextApiResponse } from "next" -import checkTokenIsValid from "../../lib/backend/components/checkTokenIsValid" -import sendResponse from "../../lib/backend/components/sendResponse" -import sendError from "../../lib/backend/components/sendError" -import { deleteCookie } from "cookies-next" -import { Token } from "@prisma/client" -import getTokenDB from "../../lib/backend/components/getTokenDB" -import getTokenFromCookie from "../../lib/backend/components/getTokenFromCookie" -import logging, { Logging } from "../../lib/backend/logging" - -interface Data { - loggedOut: boolean -} - -export default async function logout( - req: NextApiRequest, - res: NextApiResponse -) { - return getTokenFromCookie({ req, res }) - .then(checkTokenIsValid) - .then(getTokenDB) - .then(logoutResponse) - .then(sendResponse) - .catch((err) => sendError(req, res, err)) -} - -async function logoutResponse(payload: { - tokenDB: Token - req: NextApiRequest - res: NextApiResponse -}) { - const { tokenDB, req, res } = payload - - // Set login cookie - deleteCookie("token", { req, res }) - - // Successfull response - return { - req, - res, - result: { - message: "User of Token " + tokenDB.id + " logged out.", - body: { loggedOut: true }, - type: ["debug", "info.cyan"] as Logging[], - }, - } -} diff --git a/leaky-ships/pages/api/register.ts b/leaky-ships/pages/api/register.ts deleted file mode 100644 index d5e45e9..0000000 --- a/leaky-ships/pages/api/register.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { NextApiRequest, NextApiResponse } from "next" -import createPlayerDB from "../../lib/backend/components/createPlayerDB" -import sendError from "../../lib/backend/components/sendError" -import sendResponse from "../../lib/backend/components/sendResponse" -import { Logging } from "../../lib/backend/logging" -import { Player } from "@prisma/client" - -interface Data { - registered: boolean -} - -export default async function register( - req: NextApiRequest, - res: NextApiResponse -) { - const { username, password } = req.body - return createPlayerDB({ req, res, username, password }) - .then(registerResponse) - .then(sendResponse) - .catch((err) => sendError(req, res, err)) -} - -async function registerResponse(payload: { - player: Player - req: NextApiRequest - res: NextApiResponse -}) { - const { player, req, res } = payload - - // Successfull response - return { - req, - res, - result: { - message: "Player created : " + player.id, - statusCode: 201, - body: { registered: true }, - type: ["debug", "info.cyan"] as Logging[], - }, - } -} diff --git a/leaky-ships/pages/api/ws.ts b/leaky-ships/pages/api/ws.ts index f6f5a11..9b3b894 100644 --- a/leaky-ships/pages/api/ws.ts +++ b/leaky-ships/pages/api/ws.ts @@ -1,29 +1,217 @@ -import type { NextApiRequest } from "next" +import { + NextApiResponseWithSocket, + sServer, +} from "../../interfaces/NextApiSocket" +import { + composeBody, + gameSelects, + getAnyGame, + getAnyRunningGame, +} from "./game/running" +import logging from "@lib/backend/logging" +import prisma from "@lib/prisma" +import { GamePropsSchema } from "@lib/zodSchemas" +import colors from "colors" +import status from "http-status" +import { NextApiRequest } from "next" +import { getSession } from "next-auth/react" import { Server } from "socket.io" -import { NextApiResponseWithSocket } from "../../interfaces/NextApiSocket" -const SocketHandler = (req: NextApiRequest, res: NextApiResponseWithSocket) => { +colors.enable() + +const SocketHandler = async ( + req: NextApiRequest, + res: NextApiResponseWithSocket +) => { if (res.socket.server.io) { - console.log("Socket is already running " + req.url) + logging("Socket is already running " + req.url, ["infoCyan"], req) } else { - console.log("Socket is initializing " + req.url) - const io = new Server(res.socket.server) + logging("Socket is initializing " + req.url, ["infoCyan"], req) + const io: sServer = new Server(res.socket.server, { + path: "/api/ws", + cors: { + origin: "https://leaky-ships.mal-noh.de", + }, + }) + res.socket.server.io = io - io.on("connection", (socket) => { - socket.on("input-change", (msg) => { - socket.broadcast.emit("update-input", msg) - }) - // console.log(socket.id) - // console.log(socket) - // ... + // io.use(authenticate) + io.use(async (socket, next) => { + try { + const session = await getSession({ + req: socket.request, + }) + if (!session) return next(new Error(status["401"])) + socket.data.user = session.user - socket.on("test", (payload) => { - console.log("Got test:", payload) - // ... + const game = await getAnyRunningGame(socket.data.user?.id ?? "") + if (!game) { + logging( + "Forbidden, no game found: " + + JSON.stringify(Array.from(socket.rooms)), + ["debug"], + socket.request + ) + return next(new Error(status["403"])) + } + + const { payload, hash } = composeBody(game) + // let index: number | null = null + const index = payload.users.findIndex( + (user) => socket.data.user?.id === user?.id + ) + if (index < 0) return next(new Error(status["401"])) + socket.data.index = index + socket.data.gameId = game.id + socket.join(game.id) + io.to(game.id).emit("playerEvent", { + type: "connect", + i: socket.data.index, + payload: { users: payload.users }, + hash, + userId: socket.data.user?.id ?? "", + }) + + next() + } catch (err: any) { + logging("Unkonwn error - " + status["401"], ["warn"], socket.request) + next(new Error(status["401"])) + } + }) + + io.on("connection", async (socket) => { + logging( + `User connected <${socket.data.user?.email}>`.green + + ", " + + socket.id.cyan, + ["infoGreen"], + socket.request + ) + + socket.on("update", async (cb) => { + const game = await getAnyGame(socket.data.gameId ?? "") + if (!game) return + const body = composeBody(game) + cb(body) }) - socket.emit("test2", "lol") + socket.on("gameSetting", async (payload, cb) => { + const game = await prisma.game.update({ + where: { id: socket.data.gameId ?? "" }, + data: payload, + ...gameSelects, + }) + const { hash } = composeBody(game) + if (!hash) return + cb(hash) + io.to(game.id).emit( + "gameSetting", + payload, + hash, + socket.data.user?.id ?? "" + ) + }) + + socket.on("ping", (count, callback) => { + callback(count) + }) + + socket.on("leave", async (cb) => { + if (!socket.data.gameId || !socket.data.user?.id) return cb(false) + const user_Game = await prisma.user_Game.delete({ + where: { + gameId_userId: { + gameId: socket.data.gameId, + userId: socket.data.user?.id, + }, + }, + }) + const enemy = await prisma.user_Game.findFirst({ + where: { + gameId: socket.data.gameId, + }, + }) + let body: GamePropsSchema + if (user_Game.index === 1 && enemy) { + const { game } = await prisma.user_Game.update({ + where: { + gameId_index: { + gameId: socket.data.gameId, + index: 2, + }, + }, + data: { + index: 1, + }, + select: { + game: { ...gameSelects }, + }, + }) + body = composeBody(game) + } else { + const game = await prisma.game.findUnique({ + where: { + id: socket.data.gameId, + }, + ...gameSelects, + }) + if (!game) return cb(false) + body = composeBody(game) + } + const { payload, hash } = body + if (!payload || !hash || socket.data.index === undefined) + return cb(false) + io.to(socket.data.gameId).emit("playerEvent", { + type: "leave", + i: socket.data.index, + payload: { users: payload.users }, + hash, + userId: socket.data.user?.id ?? "", + }) + cb(true) + + if (!payload.users.length) { + await prisma.game.delete({ + where: { + id: socket.data.gameId, + }, + }) + } + }) + + socket.on("isReady", async (isReady) => { + if (socket.data.index === undefined || !socket.data.gameId) return + io.to(socket.data.gameId).emit( + "isReady", + { i: socket.data.index, isReady }, + socket.data.user?.id ?? "" + ) + io.to(socket.data.gameId).emit( + "isConnected", + { i: socket.data.index, isConnected: true }, + socket.data.user?.id ?? "" + ) + }) + + socket.on("disconnecting", async () => { + logging( + "Disconnecting: " + JSON.stringify(Array.from(socket.rooms)), + ["debug"], + socket.request + ) + if (socket.data.index === undefined || !socket.data.gameId) return + io.to(socket.data.gameId).emit("playerEvent", { + type: "disconnect", + i: socket.data.index, + userId: socket.data.user?.id ?? "", + }) + }) + + socket.on("disconnect", () => { + // socket.rooms.size === 0 + logging("Disconnect: " + socket.id, ["debug"], socket.request) + }) }) } res.end() diff --git a/leaky-ships/pages/dev/index.tsx b/leaky-ships/pages/dev/index.tsx deleted file mode 100644 index 2ee42c0..0000000 --- a/leaky-ships/pages/dev/index.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { faPlus, faUserPlus } from "@fortawesome/pro-solid-svg-icons" -import { faEye, faLeftLong } from "@fortawesome/pro-regular-svg-icons" -import { faCirclePlay } from "@fortawesome/pro-thin-svg-icons" -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" -import { useState } from "react" - -export default function Home() { - const [heWantsToPlay, setHeWantsToPlay] = useState(false) - return ( -
- -
-
-

Leaky

-

Ships

-
-
- {!heWantsToPlay ? ( - <> -
- -
- - - ) : ( -
- -
- - - -
-
- )} -
- ) -} diff --git a/leaky-ships/pages/dev/lobby.tsx b/leaky-ships/pages/dev/lobby.tsx deleted file mode 100644 index 6789d0e..0000000 --- a/leaky-ships/pages/dev/lobby.tsx +++ /dev/null @@ -1,256 +0,0 @@ -import { - faToggleLargeOff, - faToggleLargeOn, - faXmark, -} from "@fortawesome/pro-solid-svg-icons" -import { faRotateLeft } from "@fortawesome/pro-regular-svg-icons" -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" -import { faCaretDown } from "@fortawesome/sharp-solid-svg-icons" -import classNames from "classnames" -import Head from "next/head" -import { Dispatch, SetStateAction, useEffect, useState } from "react" - -const settingOptionsInit: { [key: string]: boolean } = { - allowSpectators: false, - allowSpecials: false, - allowChat: false, - allowMarkDraw: false, -} - -export default function Home() { - const [enemy, setEnemy] = useState(false) - const [settings, setSettings] = useState(false) - const [dots, setDots] = useState(0) - const [settingOptions, setSettingOptions] = useState(settingOptionsInit) - - useEffect(() => { - if (enemy) return - const interval = setInterval(() => setDots((e) => (e % 3) + 1), 1000) - return () => clearInterval(interval) - }, []) - - return ( -
- - Create Next App - - - - - -
-
-

- Leaky -
- Ships -

-
-
-
-
- -

- Game-PIN: 3169 -

- setSettings(true)} - /> -
-
- -

setEnemy((e) => !e)} - > - VS -

- {enemy ? ( - - ) : ( -

- Warte auf Spieler 2 {Array.from(Array(dots), () => ".").join("")} -

- )} -
-
- -
-
- {settings ? ( - setSettings(false), - }} - /> - ) : ( - <> - )} -
- ) -} - -function Icon({ - src, - text, - onClick, -}: { - src: string - text: string - onClick?: () => void -}) { - return ( - - ) -} -function Player({ - src, - text, - primary, - edit, -}: { - src: string - text: string - primary?: boolean - edit?: boolean -}) { - return ( -
-

- {text} -

-
- {src} - {edit ? ( - - ) : ( - <> - )} -
-
- ) -} -function Settings({ - props: { settingOptions, setSettingOptions, closeSettings }, -}: { - props: { - settingOptions: typeof settingOptionsInit - setSettingOptions: Dispatch> - closeSettings: () => void - } -}) { - return ( -
-
-

- Settings -

- -
- -
- {Object.keys(settingOptions).map((key) => { - const state = settingOptions[key] - const onClick = () => - setSettingOptions((e) => ({ ...e, [key]: !e[key] })) - return - })} -
-
-
-
- ) -} -function Setting({ - props: { key, state, onClick }, -}: { - props: { - key: string - state: boolean - onClick: () => void - } -}) { - return ( - <> - - - - - ) -} diff --git a/leaky-ships/pages/dev/socket.tsx b/leaky-ships/pages/dev/socket.tsx deleted file mode 100644 index 31e3be2..0000000 --- a/leaky-ships/pages/dev/socket.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { ChangeEventHandler, useEffect, useState } from "react" -import { io } from "socket.io-client" -let socket: ReturnType - -const Home = () => { - const [input, setInput] = useState("") - - useEffect(() => { - socketInitializer() - }, []) - - const socketInitializer = async () => { - await fetch("/api/ws") - socket = io() - - socket.on("connect", () => { - console.log("connected") - }) - - socket.on("update-input", (msg) => { - setInput(msg) - }) - } - - const onChangeHandler: ChangeEventHandler = (e) => { - setInput(e.target.value) - socket.emit("input-change", e.target.value) - } - - return ( - - ) -} - -export default Home diff --git a/leaky-ships/pages/dev/socketio.tsx b/leaky-ships/pages/dev/socketio.tsx deleted file mode 100644 index ac90b34..0000000 --- a/leaky-ships/pages/dev/socketio.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import SocketIO from "../../components/SocketIO" - -export default function Home() { - return ( - <> -
-
-
- -
-
-
- - ) -} diff --git a/leaky-ships/pages/game.tsx b/leaky-ships/pages/game.tsx new file mode 100644 index 0000000..b1fa9b3 --- /dev/null +++ b/leaky-ships/pages/game.tsx @@ -0,0 +1,44 @@ +import { useGameProps } from "@hooks/useGameProps" +import { useSession } from "next-auth/react" +import { useRouter } from "next/router" +import React, { useEffect } from "react" +import { toast } from "react-toastify" + +export default function Game() { + const { payload } = useGameProps() + const router = useRouter() + const { data: session } = useSession() + + useEffect(() => { + const gameId = payload?.game?.id + const path = gameId ? "/game" : "/start" + toast.promise(router.push(path), { + pending: { + render: "Wird weitergeleitet...", + toastId: "pageLoad", + }, + success: { + render: gameId + ? "Spiel gefunden!" + : session?.user.id + ? "Kein laufendes Spiel." + : "Kein laufendes Spiel. Bitte anmelden.", + toastId: "pageLoad", + theme: session?.user.id ? "dark" : undefined, + type: gameId ? "success" : "info", + }, + error: { + render: "Es ist ein Fehler aufgetreten 🤯", + type: "error", + toastId: "pageLoad", + theme: "colored", + }, + }) + }) + + return ( +
+
+
+ ) +} diff --git a/leaky-ships/pages/dev/gamefield.tsx b/leaky-ships/pages/gamefield.tsx similarity index 90% rename from leaky-ships/pages/dev/gamefield.tsx rename to leaky-ships/pages/gamefield.tsx index b44a91d..8149bd9 100644 --- a/leaky-ships/pages/dev/gamefield.tsx +++ b/leaky-ships/pages/gamefield.tsx @@ -1,5 +1,5 @@ +import Gamefield from "@components/Gamefield/Gamefield" import Head from "next/head" -import Gamefield from "../../components/Gamefield" export default function Home() { return ( diff --git a/leaky-ships/pages/dev/grid.tsx b/leaky-ships/pages/grid.tsx similarity index 92% rename from leaky-ships/pages/dev/grid.tsx rename to leaky-ships/pages/grid.tsx index 73d3b9f..a417714 100644 --- a/leaky-ships/pages/dev/grid.tsx +++ b/leaky-ships/pages/grid.tsx @@ -1,5 +1,5 @@ +import Grid from "@components/Grid" import Head from "next/head" -import Grid from "../../components/Grid" export default function Home() { return ( diff --git a/leaky-ships/pages/dev/grid2.tsx b/leaky-ships/pages/grid2.tsx similarity index 92% rename from leaky-ships/pages/dev/grid2.tsx rename to leaky-ships/pages/grid2.tsx index 9e1b598..9390e58 100644 --- a/leaky-ships/pages/dev/grid2.tsx +++ b/leaky-ships/pages/grid2.tsx @@ -1,5 +1,5 @@ +import Grid2 from "@components/Grid2" import Head from "next/head" -import Grid2 from "../../components/Grid2" export default function Home() { return ( diff --git a/leaky-ships/pages/index.tsx b/leaky-ships/pages/index.tsx index 755105b..a10a3b7 100644 --- a/leaky-ships/pages/index.tsx +++ b/leaky-ships/pages/index.tsx @@ -1,47 +1,34 @@ -import Head from "next/head" -import Link from "next/link" +import BurgerMenu from "@components/BurgerMenu" +import Logo from "@components/Logo" +import { faCirclePlay } from "@fortawesome/pro-thin-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { useRouter } from "next/router" export default function Home() { + const router = useRouter() + return ( - <> - - Create Next App - - - - -
-

- - Gamefield - -

-

- - Homepage - -

-

- - Grid Effect - -

-

- - Grid Effect with Content - -

-

- - Socket - -

-

- - SocketIO - -

-
- +
+
+ + +
+ +
+ +
+
) } diff --git a/leaky-ships/pages/lobby.tsx b/leaky-ships/pages/lobby.tsx new file mode 100644 index 0000000..53f32ca --- /dev/null +++ b/leaky-ships/pages/lobby.tsx @@ -0,0 +1,39 @@ +import BurgerMenu from "@components/BurgerMenu" +import LobbyFrame from "@components/Lobby/LobbyFrame" +import Settings from "@components/Lobby/SettingsFrame/Settings" +import Logo from "@components/Logo" +import classNames from "classnames" +import Head from "next/head" +import { useState } from "react" + +export default function Lobby() { + const [settings, setSettings] = useState(false) + + return ( +
+ + Lobby + + + + + +
+ + setSettings(true)} /> +
+ + {settings ? setSettings(false)} /> : <>} +
+ ) +} diff --git a/leaky-ships/pages/login.tsx b/leaky-ships/pages/login.tsx new file mode 100644 index 0000000..a2305b8 --- /dev/null +++ b/leaky-ships/pages/login.tsx @@ -0,0 +1,147 @@ +import { faWifiExclamation } from "@fortawesome/pro-duotone-svg-icons" +import { + faArrowLeft, + faCheck, + faSpinnerThird, + faXmark, +} from "@fortawesome/pro-solid-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import classNames from "classnames" +import { FormEvent, useState } from "react" + +enum ProcessStates { + "waiting", + "loading", + "success", + "wrong", + "error", +} +const messages: { [key in ProcessStates]: string } = { + [ProcessStates.waiting]: "Enter Login Details", + [ProcessStates.loading]: "Logging in...", + [ProcessStates.success]: "Done!", + [ProcessStates.wrong]: "Wrong username or password", + [ProcessStates.error]: "An error occurred!", +} +const icons = { + [ProcessStates.loading]: faSpinnerThird, + [ProcessStates.success]: faCheck, + [ProcessStates.wrong]: faXmark, + [ProcessStates.error]: faWifiExclamation, +} +const iconClasses = { + [ProcessStates.loading]: "animate-spin", + [ProcessStates.success]: "text-green-500", + [ProcessStates.wrong]: "text-red-500", + [ProcessStates.error]: "animate-pulse text-amber-500 !text-8xl", +} + +function Login() { + const [username, setUsername] = useState("") + const [password, setPassword] = useState("") + + const [state, setState] = useState(ProcessStates.waiting) + const [error, setError] = useState("") + + const elem = () => { + if (state === ProcessStates.waiting) + return ( +
+
+ setUsername(e.target.value)} + /> +
+ +
+ setPassword(e.target.value)} + /> +
+
+ +
+
+ ) + + return ( + <> +
+ +
+
+ +
+ + ) + } + + async function login(e: FormEvent) { + e.preventDefault() + setState(ProcessStates.loading) + await fetch("/api/login", { + method: "POST", + body: JSON.stringify({ username, password }), + }) + .then((res) => { + if (res.status === 200) setState(ProcessStates.success) + if (res.status === 401) setState(ProcessStates.wrong) + }) + .catch((err: Error) => { + setState(ProcessStates.error) + setError(err.message) + }) + } + + return ( +
+
+
+
+ Avatar +

Leaky Ships

+ + {error ? error : messages[state]} + +
+ {elem()} +
+
+
+ ) +} + +export default Login diff --git a/leaky-ships/pages/logout.tsx b/leaky-ships/pages/logout.tsx new file mode 100644 index 0000000..5269a2f --- /dev/null +++ b/leaky-ships/pages/logout.tsx @@ -0,0 +1,38 @@ +import { faSpinnerThird } from "@fortawesome/pro-solid-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { useRouter } from "next/router" +import React, { useEffect } from "react" + +function Logout() { + const router = useRouter() + + useEffect(() => { + const timeout = setTimeout(() => router.push("/dev"), 2000) + return () => clearTimeout(timeout) + }, [router]) + + return ( +
+
+
+
+ Avatar +

Leaky Ships

+ Logging out... +
+ +
+
+
+ ) +} + +export default Logout diff --git a/leaky-ships/pages/start.tsx b/leaky-ships/pages/start.tsx new file mode 100644 index 0000000..71bb701 --- /dev/null +++ b/leaky-ships/pages/start.tsx @@ -0,0 +1,217 @@ +import BurgerMenu from "@components/BurgerMenu" +import Logo from "@components/Logo" +import OptionButton from "@components/OptionButton" +import { faEye, faLeftLong } from "@fortawesome/pro-regular-svg-icons" +import { faPlus, faUserPlus } from "@fortawesome/pro-solid-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { useGameProps } from "@hooks/useGameProps" +import { GamePropsSchema } from "@lib/zodSchemas" +import status from "http-status" +import { useSession } from "next-auth/react" +import { useRouter } from "next/router" +import { useCallback, useEffect, useMemo, useState } from "react" +import OtpInput from "react-otp-input" +import { toast } from "react-toastify" +import { Icons } from "react-toastify" + +export function isAuthenticated(res: Response) { + switch (status[`${res.status}_CLASS`]) { + case status.classes.SUCCESSFUL: + case status.classes.REDIRECTION: + return res.json() + } + + const resStatus = status[`${res.status}_CLASS`] + if (typeof resStatus !== "string") return + + toast(status[res.status], { + position: "top-center", + type: "info", + theme: "colored", + }) +} + +const handleConfirmation = () => { + const toastId = "confirm" + toast.warn( +
+

You are already in another round, do you want to:

+ + or + +
, + { autoClose: false, toastId } + ) +} + +export default function Start() { + const [otp, setOtp] = useState("") + const { full } = useGameProps() + const router = useRouter() + const { data: session } = useSession() + + const query = useMemo((): { join?: boolean; watch?: boolean } => { + switch (router.query.q) { + case "join": + return { join: true } + case "watch": + return { watch: true } + default: + return {} + } + }, [router]) + + const gameFetch = useCallback( + async (pin?: string) => { + const gameRequestPromise = fetch( + "/api/game/" + (!pin ? "create" : "join"), + { + method: "POST", + body: JSON.stringify({ pin }), + } + ) + .then(isAuthenticated) + .then((game) => GamePropsSchema.parse(game)) + + const action = !pin ? "erstellt" : "angefragt" + const toastId = "pageLoad" + toast("Raum wird " + action, { + icon: Icons.spinner(), + toastId, + autoClose: false, + hideProgressBar: true, + closeButton: false, + }) + const res = await gameRequestPromise.catch(() => + toast.update(toastId, { + render: "Es ist ein Fehler aufgetreten bei der Anfrage 🤯", + type: "error", + icon: Icons.error, + theme: "colored", + autoClose: 5000, + hideProgressBar: false, + closeButton: true, + }) + ) + if (!res) return + full(res) + + toast.update(toastId, { + render: "Weiterleitung", + }) + + router + .push("/lobby") + .then(() => + toast.update(toastId, { + render: "Raum begetreten 👌", + type: "info", + icon: Icons.success, + autoClose: 5000, + hideProgressBar: false, + closeButton: true, + }) + ) + .catch(() => + toast.update(toastId, { + render: "Es ist ein Fehler aufgetreten beim Seiten wechsel 🤯", + type: "error", + icon: Icons.error, + theme: "colored", + autoClose: 5000, + hideProgressBar: false, + closeButton: true, + }) + ) + }, + [router, full] + ) + + useEffect(() => { + if (otp.length !== 4) return + gameFetch(otp) + }, [otp, gameFetch]) + + return ( +
+
+ + +
+ +
+ gameFetch()} + icon={faPlus} + disabled={!session} + > + Raum erstellen + + { + router.push({ + pathname: router.pathname, + query: { q: "join" }, + }) + }} + icon={faUserPlus} + disabled={!session} + > + {query.join && session ? ( + -} + renderInput={(props) => } + /> + ) : ( + "Raum beitreten" + )} + + { + router.push({ + pathname: router.pathname, + query: { q: "watch" }, + }) + }} + > + {query.watch ? ( + -} + renderInput={(props) => } + /> + ) : ( + "Zuschauen" + )} + +
+
+
+
+ ) +} diff --git a/leaky-ships/pnpm-lock.yaml b/leaky-ships/pnpm-lock.yaml index 721ead9..094fded 100644 --- a/leaky-ships/pnpm-lock.yaml +++ b/leaky-ships/pnpm-lock.yaml @@ -1,105 +1,283 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.1' -specifiers: - '@fortawesome/fontawesome-svg-core': ^6.2.1 - '@fortawesome/pro-duotone-svg-icons': ^6.2.1 - '@fortawesome/pro-light-svg-icons': ^6.2.1 - '@fortawesome/pro-regular-svg-icons': ^6.2.1 - '@fortawesome/pro-solid-svg-icons': ^6.2.1 - '@fortawesome/pro-thin-svg-icons': ^6.2.1 - '@fortawesome/react-fontawesome': ^0.2.0 - '@fortawesome/sharp-solid-svg-icons': ^6.2.1 - '@next/font': 13.1.1 - '@prisma/client': ^4.9.0 - '@types/bcrypt': ^5.0.0 - '@types/jsonwebtoken': ^9.0.1 - '@types/node': ^18.11.18 - '@types/react': ^18.0.27 - '@types/react-dom': ^18.0.10 - '@types/uuid': ^9.0.0 - '@types/web-bluetooth': ^0.0.16 - autoprefixer: ^10.4.13 - bcrypt: ^5.1.0 - classnames: ^2.3.2 - colors: ^1.4.0 - cookies-next: ^2.1.1 - eslint: 8.31.0 - eslint-config-next: 13.1.1 - eslint-config-prettier: ^8.6.0 - jsonwebtoken: ^9.0.0 - next: 13.1.1 - postcss: ^8.4.21 - prettier: ^2.8.3 - prettier-plugin-tailwindcss: ^0.2.2 - prisma: ^4.9.0 - react: 18.2.0 - react-dom: 18.2.0 - sass: ^1.57.1 - socket.io: ^4.5.4 - socket.io-client: ^4.5.4 - tailwindcss: ^3.2.4 - typescript: 4.9.4 - uuid: ^9.0.0 +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false dependencies: - '@fortawesome/fontawesome-svg-core': 6.2.1 - '@fortawesome/pro-duotone-svg-icons': 6.2.1 - '@fortawesome/pro-light-svg-icons': 6.2.1 - '@fortawesome/pro-regular-svg-icons': 6.2.1 - '@fortawesome/pro-solid-svg-icons': 6.2.1 - '@fortawesome/pro-thin-svg-icons': 6.2.1 - '@fortawesome/react-fontawesome': 0.2.0_z27bm67dtmuyyvss23ckjdrcuy - '@fortawesome/sharp-solid-svg-icons': 6.2.1 - '@next/font': 13.1.1 - '@prisma/client': 4.9.0_prisma@4.9.0 - bcrypt: 5.1.0 - classnames: 2.3.2 - colors: 1.4.0 - cookies-next: 2.1.1 - eslint: 8.31.0 - eslint-config-next: 13.1.1_iukboom6ndih5an6iafl45j2fe - jsonwebtoken: 9.0.0 - next: 13.1.1_3duxcpitbtplz62feflag7fwby - prisma: 4.9.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - socket.io: 4.5.4 - socket.io-client: 4.5.4 - typescript: 4.9.4 - uuid: 9.0.0 + '@fortawesome/fontawesome-svg-core': + specifier: ^6.4.0 + version: 6.4.0 + '@fortawesome/pro-duotone-svg-icons': + specifier: ^6.4.0 + version: 6.4.0 + '@fortawesome/pro-light-svg-icons': + specifier: ^6.4.0 + version: 6.4.0 + '@fortawesome/pro-regular-svg-icons': + specifier: ^6.4.0 + version: 6.4.0 + '@fortawesome/pro-solid-svg-icons': + specifier: ^6.4.0 + version: 6.4.0 + '@fortawesome/pro-thin-svg-icons': + specifier: ^6.4.0 + version: 6.4.0 + '@fortawesome/react-fontawesome': + specifier: ^0.2.0 + version: 0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0) + '@fortawesome/sharp-solid-svg-icons': + specifier: ^6.4.0 + version: 6.4.0 + '@next-auth/prisma-adapter': + specifier: ^1.0.7 + version: 1.0.7(@prisma/client@4.15.0)(next-auth@4.22.1) + '@next/font': + specifier: 13.1.1 + version: 13.1.1 + '@prisma/client': + specifier: ^4.15.0 + version: 4.15.0(prisma@4.15.0) + classnames: + specifier: ^2.3.2 + version: 2.3.2 + colors: + specifier: ^1.4.0 + version: 1.4.0 + eslint: + specifier: 8.31.0 + version: 8.31.0 + eslint-config-next: + specifier: 13.1.1 + version: 13.1.1(eslint@8.31.0)(typescript@4.9.4) + http-status: + specifier: ^1.6.2 + version: 1.6.2 + immer: + specifier: ^10.0.2 + version: 10.0.2 + next: + specifier: 13.1.1 + version: 13.1.1(react-dom@18.2.0)(react@18.2.0)(sass@1.62.1) + next-auth: + specifier: ^4.22.1 + version: 4.22.1(next@13.1.1)(nodemailer@6.9.3)(react-dom@18.2.0)(react@18.2.0) + nodemailer: + specifier: ^6.9.3 + version: 6.9.3 + prisma: + specifier: ^4.15.0 + version: 4.15.0 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-otp-input: + specifier: ^3.0.2 + version: 3.0.2(react-dom@18.2.0)(react@18.2.0) + react-toastify: + specifier: ^9.1.3 + version: 9.1.3(react-dom@18.2.0)(react@18.2.0) + socket.io: + specifier: ^4.6.2 + version: 4.6.2 + socket.io-client: + specifier: ^4.6.2 + version: 4.6.2 + typescript: + specifier: 4.9.4 + version: 4.9.4 + unique-names-generator: + specifier: ^4.7.1 + version: 4.7.1 + zod: + specifier: 3.21.1 + version: 3.21.1 + zod-prisma-types: + specifier: ^2.7.1 + version: 2.7.1 + zustand: + specifier: ^4.3.8 + version: 4.3.8(immer@10.0.2)(react@18.2.0) devDependencies: - '@types/bcrypt': 5.0.0 - '@types/jsonwebtoken': 9.0.1 - '@types/node': 18.11.18 - '@types/react': 18.0.27 - '@types/react-dom': 18.0.10 - '@types/uuid': 9.0.0 - '@types/web-bluetooth': 0.0.16 - autoprefixer: 10.4.13_postcss@8.4.21 - eslint-config-prettier: 8.6.0_eslint@8.31.0 - postcss: 8.4.21 - prettier: 2.8.3 - prettier-plugin-tailwindcss: 0.2.2_prettier@2.8.3 - sass: 1.57.1 - tailwindcss: 3.2.4_postcss@8.4.21 + '@total-typescript/ts-reset': + specifier: ^0.3.7 + version: 0.3.7 + '@trivago/prettier-plugin-sort-imports': + specifier: ^4.1.1 + version: 4.1.1(prettier@2.8.8) + '@types/node': + specifier: ^18.16.16 + version: 18.16.16 + '@types/react': + specifier: ^18.2.8 + version: 18.2.8 + '@types/react-dom': + specifier: ^18.2.4 + version: 18.2.4 + '@types/web-bluetooth': + specifier: ^0.0.16 + version: 0.0.16 + autoprefixer: + specifier: ^10.4.14 + version: 10.4.14(postcss@8.4.24) + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.31.0) + postcss: + specifier: ^8.4.24 + version: 8.4.24 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + prettier-plugin-tailwindcss: + specifier: ^0.2.8 + version: 0.2.8(@trivago/prettier-plugin-sort-imports@4.1.1)(prettier@2.8.8) + sass: + specifier: ^1.62.1 + version: 1.62.1 + tailwindcss: + specifier: ^3.3.2 + version: 3.3.2 packages: - /@babel/runtime/7.20.13: - resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + + /@babel/code-frame@7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/generator@7.17.7: + resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/helper-environment-visitor@7.22.1: + resolution: {integrity: sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==} + engines: {node: '>=6.9.0'} + dev: true + + /@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 + dev: true + + /@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 + dev: true + + /@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 + dev: true + + /@babel/helper-string-parser@7.21.5: + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/highlight@7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.22.4: + resolution: {integrity: sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.17.0 + dev: true + + /@babel/runtime@7.22.3: + resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: false - /@eslint/eslintrc/1.4.1: + /@babel/template@7.21.9: + resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.22.4 + '@babel/types': 7.22.4 + dev: true + + /@babel/traverse@7.17.3: + resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.17.7 + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.22.4 + '@babel/types': 7.17.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.17.0: + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.22.4: + resolution: {integrity: sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.21.5 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@eslint/eslintrc@1.4.1: resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.1 + espree: 9.5.2 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -109,81 +287,81 @@ packages: transitivePeerDependencies: - supports-color - /@fortawesome/fontawesome-common-types/6.2.1: - resolution: {integrity: sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==, tarball: '@fortawesome/fontawesome-common-types/-/6.2.1/fontawesome-common-types-6.2.1.tgz'} + /@fortawesome/fontawesome-common-types@6.4.0: + resolution: {integrity: sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==, tarball: https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/6.4.0/fontawesome-common-types-6.4.0.tgz} engines: {node: '>=6'} requiresBuild: true dev: false - /@fortawesome/fontawesome-svg-core/6.2.1: - resolution: {integrity: sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==, tarball: '@fortawesome/fontawesome-svg-core/-/6.2.1/fontawesome-svg-core-6.2.1.tgz'} + /@fortawesome/fontawesome-svg-core@6.4.0: + resolution: {integrity: sha512-Bertv8xOiVELz5raB2FlXDPKt+m94MQ3JgDfsVbrqNpLU9+UE2E18GKjLKw+d3XbeYPqg1pzyQKGsrzbw+pPaw==, tarball: https://npm.fontawesome.com/@fortawesome/fontawesome-svg-core/-/6.4.0/fontawesome-svg-core-6.4.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/pro-duotone-svg-icons/6.2.1: - resolution: {integrity: sha512-8kG2rcHxGdb8yGb2KLZN7Ht014Nf4lefvXP+pihJAE9Jy515g/xPwglkFMu3Ue6MBtcdrLPIYirV8664ubAVgA==, tarball: '@fortawesome/pro-duotone-svg-icons/-/6.2.1/pro-duotone-svg-icons-6.2.1.tgz'} + /@fortawesome/pro-duotone-svg-icons@6.4.0: + resolution: {integrity: sha512-cTuIgDDhU/kB4UCOSN7Tdt0WQ5pcTMmxUY9KvcMZ1dqa68fWAL2q+6ztpVzYOMpYvErYN0+86t6xyJ7E58f3wg==, tarball: https://npm.fontawesome.com/@fortawesome/pro-duotone-svg-icons/-/6.4.0/pro-duotone-svg-icons-6.4.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/pro-light-svg-icons/6.2.1: - resolution: {integrity: sha512-QTs61d6jAnYhjXuaRUTexv+KQuxzkwG5jjOGBQOGOnOoGZgho6AEU/a5r2Awgv5o+It50C/LduPnboA31P1NUQ==, tarball: '@fortawesome/pro-light-svg-icons/-/6.2.1/pro-light-svg-icons-6.2.1.tgz'} + /@fortawesome/pro-light-svg-icons@6.4.0: + resolution: {integrity: sha512-LAK1nUBWhXz8wrNBP+GwpZPqDSHfj7Xp9hhKqhF0Gd2lYtjgl67IvQSf1Vv1o75LK+odq6rkt6RfzBv0quwH/g==, tarball: https://npm.fontawesome.com/@fortawesome/pro-light-svg-icons/-/6.4.0/pro-light-svg-icons-6.4.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/pro-regular-svg-icons/6.2.1: - resolution: {integrity: sha512-U3JCqJjwkNSrxgDafsBBUQBbOlvTsa4Odtn7m01NDko45pZu2nh3eqCexovy4y6LzWXXP/Spq+AO29CBpCW8yA==, tarball: '@fortawesome/pro-regular-svg-icons/-/6.2.1/pro-regular-svg-icons-6.2.1.tgz'} + /@fortawesome/pro-regular-svg-icons@6.4.0: + resolution: {integrity: sha512-yEJgoA/31qfIsD27kAg31BODCD+bvgievPp4R39F3kUp/+mu05qX6xgW366RUfs4CnTWSw0fFpc4AhFwC7xbJw==, tarball: https://npm.fontawesome.com/@fortawesome/pro-regular-svg-icons/-/6.4.0/pro-regular-svg-icons-6.4.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/pro-solid-svg-icons/6.2.1: - resolution: {integrity: sha512-gIGrv/hcw5/UsW0swBfxL9jwb2F+Yut+9QY47ZPs8+Ac9/AmYxIzJ31ZnYawwLdrxU/09Unc+AHbTfn0QXLfvQ==, tarball: '@fortawesome/pro-solid-svg-icons/-/6.2.1/pro-solid-svg-icons-6.2.1.tgz'} + /@fortawesome/pro-solid-svg-icons@6.4.0: + resolution: {integrity: sha512-R54gxoqHAZdlSCmE7JYpQKT64Jgw59nQIyabT6oh3jsb70O4A3ea+ojVBCKsvoW4UhYe1IOXS1o4PqDEW8Y7Tg==, tarball: https://npm.fontawesome.com/@fortawesome/pro-solid-svg-icons/-/6.4.0/pro-solid-svg-icons-6.4.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/pro-thin-svg-icons/6.2.1: - resolution: {integrity: sha512-X+lubysMJrNf/Qw9lDt7BkD9An0pwOEzOMMTaY2dEKN901SJENJ/Y5Ne23CCWSZwAHydoz5EN4JCMVJS+wEkvQ==, tarball: '@fortawesome/pro-thin-svg-icons/-/6.2.1/pro-thin-svg-icons-6.2.1.tgz'} + /@fortawesome/pro-thin-svg-icons@6.4.0: + resolution: {integrity: sha512-OVRndqHJNYFtFLUX4p9nDgIAHGs1DdR7EtVKq+oepfCH4kkTM/flsI1gjEty6VV6/FifrWCzEXyDvOzdjgqwRA==, tarball: https://npm.fontawesome.com/@fortawesome/pro-thin-svg-icons/-/6.4.0/pro-thin-svg-icons-6.4.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@fortawesome/react-fontawesome/0.2.0_z27bm67dtmuyyvss23ckjdrcuy: - resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==, tarball: '@fortawesome/react-fontawesome/-/0.2.0/react-fontawesome-0.2.0.tgz'} + /@fortawesome/react-fontawesome@0.2.0(@fortawesome/fontawesome-svg-core@6.4.0)(react@18.2.0): + resolution: {integrity: sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==, tarball: https://npm.fontawesome.com/@fortawesome/react-fontawesome/-/0.2.0/react-fontawesome-0.2.0.tgz} peerDependencies: '@fortawesome/fontawesome-svg-core': ~1 || ~6 react: '>=16.3' dependencies: - '@fortawesome/fontawesome-svg-core': 6.2.1 + '@fortawesome/fontawesome-svg-core': 6.4.0 prop-types: 15.8.1 react: 18.2.0 dev: false - /@fortawesome/sharp-solid-svg-icons/6.2.1: - resolution: {integrity: sha512-fK/gm8TDlMEWo1x7KuQD1ZfD98PF28wtmQHs8AgdQk0GS0QV0wBfxOWEmG+BM857Obras9xjSj7p7DwhfRWCZA==, tarball: '@fortawesome/sharp-solid-svg-icons/-/6.2.1/sharp-solid-svg-icons-6.2.1.tgz'} + /@fortawesome/sharp-solid-svg-icons@6.4.0: + resolution: {integrity: sha512-7fpvOwhFlJSuHKeYON8nz9N4PQ30RMtMN9TlO9et3vBQgDGVFDyfKEu3rOmJhv+xLKJWLpd0cx5VvViGg1FXzg==, tarball: https://npm.fontawesome.com/@fortawesome/sharp-solid-svg-icons/-/6.4.0/sharp-solid-svg-icons-6.4.0.tgz} engines: {node: '>=6'} requiresBuild: true dependencies: - '@fortawesome/fontawesome-common-types': 6.2.1 + '@fortawesome/fontawesome-common-types': 6.4.0 dev: false - /@humanwhocodes/config-array/0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -192,46 +370,72 @@ packages: transitivePeerDependencies: - supports-color - /@humanwhocodes/module-importer/1.0.1: + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - /@mapbox/node-pre-gyp/1.0.10: - resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} - hasBin: true + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} dependencies: - detect-libc: 2.0.1 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.6.8 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.3.8 - tar: 6.1.13 - transitivePeerDependencies: - - encoding - - supports-color + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@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 + dev: true + + /@next-auth/prisma-adapter@1.0.7(@prisma/client@4.15.0)(next-auth@4.22.1): + resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==} + peerDependencies: + '@prisma/client': '>=2.26.0 || >=3' + next-auth: ^4 + dependencies: + '@prisma/client': 4.15.0(prisma@4.15.0) + next-auth: 4.22.1(next@13.1.1)(nodemailer@6.9.3)(react-dom@18.2.0)(react@18.2.0) dev: false - /@next/env/13.1.1: + /@next/env@13.1.1: resolution: {integrity: sha512-vFMyXtPjSAiOXOywMojxfKIqE3VWN5RCAx+tT3AS3pcKjMLFTCJFUWsKv8hC+87Z1F4W3r68qTwDFZIFmd5Xkw==} dev: false - /@next/eslint-plugin-next/13.1.1: + /@next/eslint-plugin-next@13.1.1: resolution: {integrity: sha512-SBrOFS8PC3nQ5aeZmawJkjKkWjwK9RoxvBSv/86nZp0ubdoVQoko8r8htALd9ufp16NhacCdqhu9bzZLDWtALQ==} dependencies: glob: 7.1.7 dev: false - /@next/font/13.1.1: + /@next/font@13.1.1: resolution: {integrity: sha512-amygRorS05hYK1/XQRZo5qBl7l2fpHnezeKU/cNveWU5QJg+sg8gMGkUXHtvesNKpiKIJshBRH1TzvO+2sKpvQ==} dev: false - /@next/swc-android-arm-eabi/13.1.1: + /@next/swc-android-arm-eabi@13.1.1: resolution: {integrity: sha512-qnFCx1kT3JTWhWve4VkeWuZiyjG0b5T6J2iWuin74lORCupdrNukxkq9Pm+Z7PsatxuwVJMhjUoYz7H4cWzx2A==} engines: {node: '>= 10'} cpu: [arm] @@ -240,7 +444,7 @@ packages: dev: false optional: true - /@next/swc-android-arm64/13.1.1: + /@next/swc-android-arm64@13.1.1: resolution: {integrity: sha512-eCiZhTzjySubNqUnNkQCjU3Fh+ep3C6b5DCM5FKzsTH/3Gr/4Y7EiaPZKILbvnXmhWtKPIdcY6Zjx51t4VeTfA==} engines: {node: '>= 10'} cpu: [arm64] @@ -249,7 +453,7 @@ packages: dev: false optional: true - /@next/swc-darwin-arm64/13.1.1: + /@next/swc-darwin-arm64@13.1.1: resolution: {integrity: sha512-9zRJSSIwER5tu9ADDkPw5rIZ+Np44HTXpYMr0rkM656IvssowPxmhK0rTreC1gpUCYwFsRbxarUJnJsTWiutPg==} engines: {node: '>= 10'} cpu: [arm64] @@ -258,7 +462,7 @@ packages: dev: false optional: true - /@next/swc-darwin-x64/13.1.1: + /@next/swc-darwin-x64@13.1.1: resolution: {integrity: sha512-qWr9qEn5nrnlhB0rtjSdR00RRZEtxg4EGvicIipqZWEyayPxhUu6NwKiG8wZiYZCLfJ5KWr66PGSNeDMGlNaiA==} engines: {node: '>= 10'} cpu: [x64] @@ -267,7 +471,7 @@ packages: dev: false optional: true - /@next/swc-freebsd-x64/13.1.1: + /@next/swc-freebsd-x64@13.1.1: resolution: {integrity: sha512-UwP4w/NcQ7V/VJEj3tGVszgb4pyUCt3lzJfUhjDMUmQbzG9LDvgiZgAGMYH6L21MoyAATJQPDGiAMWAPKsmumA==} engines: {node: '>= 10'} cpu: [x64] @@ -276,7 +480,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm-gnueabihf/13.1.1: + /@next/swc-linux-arm-gnueabihf@13.1.1: resolution: {integrity: sha512-CnsxmKHco9sosBs1XcvCXP845Db+Wx1G0qouV5+Gr+HT/ZlDYEWKoHVDgnJXLVEQzq4FmHddBNGbXvgqM1Gfkg==} engines: {node: '>= 10'} cpu: [arm] @@ -285,7 +489,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu/13.1.1: + /@next/swc-linux-arm64-gnu@13.1.1: resolution: {integrity: sha512-JfDq1eri5Dif+VDpTkONRd083780nsMCOKoFG87wA0sa4xL8LGcXIBAkUGIC1uVy9SMsr2scA9CySLD/i+Oqiw==} engines: {node: '>= 10'} cpu: [arm64] @@ -294,7 +498,7 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl/13.1.1: + /@next/swc-linux-arm64-musl@13.1.1: resolution: {integrity: sha512-GA67ZbDq2AW0CY07zzGt07M5b5Yaq5qUpFIoW3UFfjOPgb0Sqf3DAW7GtFMK1sF4ROHsRDMGQ9rnT0VM2dVfKA==} engines: {node: '>= 10'} cpu: [arm64] @@ -303,7 +507,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu/13.1.1: + /@next/swc-linux-x64-gnu@13.1.1: resolution: {integrity: sha512-nnjuBrbzvqaOJaV+XgT8/+lmXrSCOt1YYZn/irbDb2fR2QprL6Q7WJNgwsZNxiLSfLdv+2RJGGegBx9sLBEzGA==} engines: {node: '>= 10'} cpu: [x64] @@ -312,7 +516,7 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl/13.1.1: + /@next/swc-linux-x64-musl@13.1.1: resolution: {integrity: sha512-CM9xnAQNIZ8zf/igbIT/i3xWbQZYaF397H+JroF5VMOCUleElaMdQLL5riJml8wUfPoN3dtfn2s4peSr3azz/g==} engines: {node: '>= 10'} cpu: [x64] @@ -321,7 +525,7 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc/13.1.1: + /@next/swc-win32-arm64-msvc@13.1.1: resolution: {integrity: sha512-pzUHOGrbgfGgPlOMx9xk3QdPJoRPU+om84hqVoe6u+E0RdwOG0Ho/2UxCgDqmvpUrMab1Deltlt6RqcXFpnigQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -330,7 +534,7 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc/13.1.1: + /@next/swc-win32-ia32-msvc@13.1.1: resolution: {integrity: sha512-WeX8kVS46aobM9a7Xr/kEPcrTyiwJqQv/tbw6nhJ4fH9xNZ+cEcyPoQkwPo570dCOLz3Zo9S2q0E6lJ/EAUOBg==} engines: {node: '>= 10'} cpu: [ia32] @@ -339,7 +543,7 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc/13.1.1: + /@next/swc-win32-x64-msvc@13.1.1: resolution: {integrity: sha512-mVF0/3/5QAc5EGVnb8ll31nNvf3BWpPY4pBb84tk+BfQglWLqc5AC9q1Ht/YMWiEgs8ALNKEQ3GQnbY0bJF2Gg==} engines: {node: '>= 10'} cpu: [x64] @@ -348,38 +552,42 @@ 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.15.0 - /@pkgr/utils/2.3.1: - resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + /@panva/hkdf@1.1.1: + resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} + dev: false + + /@pkgr/utils@2.4.1: + resolution: {integrity: sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 + fast-glob: 3.2.12 is-glob: 4.0.3 - open: 8.4.0 + open: 9.1.0 picocolors: 1.0.0 - tiny-glob: 0.2.9 - tslib: 2.5.0 + tslib: 2.5.2 dev: false - /@prisma/client/4.9.0_prisma@4.9.0: - resolution: {integrity: sha512-bz6QARw54sWcbyR1lLnF2QHvRW5R/Jxnbbmwh3u+969vUKXtBkXgSgjDA85nji31ZBlf7+FrHDy5x+5ydGyQDg==} + /@prisma/client@4.15.0(prisma@4.15.0): + resolution: {integrity: sha512-xnROvyABcGiwqRNdrObHVZkD9EjkJYHOmVdlKy1yGgI+XOzvMzJ4tRg3dz1pUlsyhKxXGCnjIQjWW+2ur+YXuw==} engines: {node: '>=14.17'} requiresBuild: true peerDependencies: @@ -388,98 +596,139 @@ packages: prisma: optional: true dependencies: - '@prisma/engines-version': 4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5 - prisma: 4.9.0 + '@prisma/engines-version': 4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944 + prisma: 4.15.0 dev: false - /@prisma/engines-version/4.9.0-42.ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5: - resolution: {integrity: sha512-M16aibbxi/FhW7z1sJCX8u+0DriyQYY5AyeTH7plQm9MLnURoiyn3CZBqAyIoQ+Z1pS77usCIibYJWSgleBMBA==} + /@prisma/debug@4.15.0: + resolution: {integrity: sha512-dkbPz+gOVlWDBAaOEseSpAUz9NppT38UlwdryPyrwct6OClLirNC7wH+TpAQk5OZp9x59hNnfDz+T7XvL1v0/Q==} + dependencies: + '@types/debug': 4.1.8 + debug: 4.3.4 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color dev: false - /@prisma/engines/4.9.0: - resolution: {integrity: sha512-t1pt0Gsp+HcgPJrHFc+d/ZSAaKKWar2G/iakrE07yeKPNavDP3iVKPpfXP22OTCHZUWf7OelwKJxQgKAm5hkgw==} + /@prisma/engines-version@4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944: + resolution: {integrity: sha512-sVOig4tjGxxlYaFcXgE71f/rtFhzyYrfyfNFUsxCIEJyVKU9rdOWIlIwQ2NQ7PntvGnn+x0XuFo4OC1jvPJKzg==} + dev: false + + /@prisma/engines@4.15.0: + resolution: {integrity: sha512-FTaOCGs0LL0OW68juZlGxFtYviZa4xdQj/rQEdat2txw0s3Vu/saAPKjNVXfIgUsGXmQ72HPgNr6935/P8FNAA==} requiresBuild: true dev: false - /@rushstack/eslint-patch/1.2.0: - resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} + /@prisma/generator-helper@4.15.0: + resolution: {integrity: sha512-JVHNgXr0LrcqXqmFrs+BzxfyRL6cFD5GLTMVWfCLU7kqSJdWuZxfoZW995tg6mOXnBgPTf6Ocv3RY4RLQq8k4g==} + dependencies: + '@prisma/debug': 4.15.0 + '@types/cross-spawn': 6.0.2 + cross-spawn: 7.0.3 + kleur: 4.1.5 + transitivePeerDependencies: + - supports-color dev: false - /@socket.io/component-emitter/3.1.0: + /@rushstack/eslint-patch@1.3.0: + resolution: {integrity: sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==} + dev: false + + /@socket.io/component-emitter@3.1.0: resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} dev: false - /@swc/helpers/0.4.14: + /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: - tslib: 2.5.0 + tslib: 2.5.2 dev: false - /@types/bcrypt/5.0.0: - resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==} - dependencies: - '@types/node': 18.11.18 + /@total-typescript/ts-reset@0.3.7: + resolution: {integrity: sha512-yXt2BRRVCJVvzWaxac5n0nCXzIrQEBE/MeYlNQ8/Iq7UeelNmm/AdnUAu18ilSS893mbEQ4u6whPt/HvOPc4rw==} dev: true - /@types/cookie/0.4.1: + /@trivago/prettier-plugin-sort-imports@4.1.1(prettier@2.8.8): + resolution: {integrity: sha512-dQ2r2uzNr1x6pJsuh/8x0IRA3CBUB+pWEW3J/7N98axqt7SQSm+2fy0FLNXvXGg77xEDC7KHxJlHfLYyi7PDcw==} + peerDependencies: + '@vue/compiler-sfc': 3.x + prettier: 2.x + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@babel/generator': 7.17.7 + '@babel/parser': 7.22.4 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 2.8.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: false - /@types/cors/2.8.13: + /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.16.16 dev: false - /@types/json5/0.0.29: + /@types/cross-spawn@6.0.2: + resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} + dependencies: + '@types/node': 18.16.16 + dev: false + + /@types/debug@4.1.8: + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + dependencies: + '@types/ms': 0.7.31 + dev: false + + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false - /@types/jsonwebtoken/9.0.1: - resolution: {integrity: sha512-c5ltxazpWabia/4UzhIoaDcIza4KViOQhdbjRlfcIGVnsE3c3brkz9Z+F/EeJIECOQP7W7US2hNE930cWWkPiw==} - dependencies: - '@types/node': 18.11.18 - dev: true - - /@types/node/16.18.11: - resolution: {integrity: sha512-3oJbGBUWuS6ahSnEq1eN2XrCyf4YsWI8OyCvo7c64zQJNplk3mO84t53o8lfTk+2ji59g5ycfc6qQ3fdHliHuA==} + /@types/ms@0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node/18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + /@types/node@18.16.16: + resolution: {integrity: sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g==} - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react-dom/18.0.10: - resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} + /@types/react-dom@18.2.4: + resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} dependencies: - '@types/react': 18.0.27 + '@types/react': 18.2.8 dev: true - /@types/react/18.0.27: - resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} + /@types/react@18.2.8: + resolution: {integrity: sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==} dependencies: '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.1 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 dev: true - /@types/scheduler/0.16.2: - resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} dev: true - /@types/uuid/9.0.0: - resolution: {integrity: sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==} - dev: true - - /@types/web-bluetooth/0.0.16: + /@types/web-bluetooth@0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} dev: true - /@typescript-eslint/parser/5.49.0_iukboom6ndih5an6iafl45j2fe: - resolution: {integrity: sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==} + /@typescript-eslint/parser@5.59.8(eslint@8.31.0)(typescript@4.9.4): + resolution: {integrity: sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -488,9 +737,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.49.0 - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/typescript-estree': 5.49.0_typescript@4.9.4 + '@typescript-eslint/scope-manager': 5.59.8 + '@typescript-eslint/types': 5.59.8 + '@typescript-eslint/typescript-estree': 5.59.8(typescript@4.9.4) debug: 4.3.4 eslint: 8.31.0 typescript: 4.9.4 @@ -498,21 +747,21 @@ packages: - supports-color dev: false - /@typescript-eslint/scope-manager/5.49.0: - resolution: {integrity: sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==} + /@typescript-eslint/scope-manager@5.59.8: + resolution: {integrity: sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/visitor-keys': 5.49.0 + '@typescript-eslint/types': 5.59.8 + '@typescript-eslint/visitor-keys': 5.59.8 dev: false - /@typescript-eslint/types/5.49.0: - resolution: {integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==} + /@typescript-eslint/types@5.59.8: + resolution: {integrity: sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree/5.49.0_typescript@4.9.4: - resolution: {integrity: sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==} + /@typescript-eslint/typescript-estree@5.59.8(typescript@4.9.4): + resolution: {integrity: sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -520,31 +769,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/visitor-keys': 5.49.0 + '@typescript-eslint/types': 5.59.8 + '@typescript-eslint/visitor-keys': 5.59.8 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 + semver: 7.5.1 + tsutils: 3.21.0(typescript@4.9.4) typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/visitor-keys/5.49.0: - resolution: {integrity: sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==} + /@typescript-eslint/visitor-keys@5.59.8: + resolution: {integrity: sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.49.0 - eslint-visitor-keys: 3.3.0 + '@typescript-eslint/types': 5.59.8 + eslint-visitor-keys: 3.4.1 dev: false - /abbrev/1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false - - /accepts/1.3.8: + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} dependencies: @@ -552,47 +797,19 @@ packages: negotiator: 0.6.3 dev: false - /acorn-jsx/5.3.2_acorn@8.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 - /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 - dev: true - - /acorn-walk/7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn/8.8.2: + /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -600,208 +817,226 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-styles/4.3.0: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /anymatch/3.1.3: + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /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: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false - - /are-we-there-yet/2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.0 - dev: false - - /arg/5.0.2: + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-query/5.1.3: + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: - deep-equal: 2.2.0 + deep-equal: 2.2.1 dev: false - /array-includes/3.1.6: + /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: false + + /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.1 - get-intrinsic: 1.2.0 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.1 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'} dev: false - /array.prototype.flat/1.3.1: + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 dev: false - /array.prototype.flatmap/1.3.1: + /array.prototype.flatmap@1.3.1: resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 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 - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 dev: false - /ast-types-flow/0.0.7: + /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: false - /autoprefixer/10.4.13_postcss@8.4.21: - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + /autoprefixer@10.4.14(postcss@8.4.24): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.5 - caniuse-lite: 1.0.30001449 + browserslist: 4.21.7 + caniuse-lite: 1.0.30001492 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.21 + postcss: 8.4.24 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: false - /axe-core/4.6.3: - resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} + /axe-core@4.7.2: + resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} dev: false - /axobject-query/3.1.1: + /axobject-query@3.1.1: resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} dependencies: - deep-equal: 2.2.0 + deep-equal: 2.2.1 dev: false - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64id/2.0.0: + /base64id@2.0.0: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} dev: false - /bcrypt/5.1.0: - resolution: {integrity: sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==} - engines: {node: '>= 10.0.0'} - requiresBuild: true - dependencies: - '@mapbox/node-pre-gyp': 1.0.10 - node-addon-api: 5.1.0 - transitivePeerDependencies: - - encoding - - supports-color + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} dev: false - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /brace-expansion/1.1.11: + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: false + + /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 - /browserslist/4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + /browserslist@4.21.7: + resolution: {integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001449 - electron-to-chromium: 1.4.288 - node-releases: 2.0.10 - update-browserslist-db: 1.0.10_browserslist@4.21.5 + caniuse-lite: 1.0.30001492 + electron-to-chromium: 1.4.417 + node-releases: 2.0.12 + update-browserslist-db: 1.0.11(browserslist@4.21.7) dev: true - /buffer-equal-constant-time/1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 dev: false - /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.0 + get-intrinsic: 1.2.1 dev: false - /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'} dev: true - /caniuse-lite/1.0.30001449: - resolution: {integrity: sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==} + /caniuse-lite@1.0.30001492: + resolution: {integrity: sha512-2efF8SAZwgAX1FJr87KWhvuJxnGJKOnctQa8xLOskAXNXq8oiuqgl6u1kk3fFpsp3GgvzlRjiK1sl63hNtFADw==} - /chalk/4.1.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /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 - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -815,59 +1050,66 @@ packages: optionalDependencies: fsevents: 2.3.2 - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /classnames/2.3.2: + /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false - /client-only/0.0.1: + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false - /color-convert/2.0.1: + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + + /code-block-writer@11.0.3: + resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /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.4: + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-support/1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: false - - /colors/1.4.0: + /colors@1.4.0: resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} engines: {node: '>=0.1.90'} dev: false - /concat-map/0.0.1: + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /console-control-strings/1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false - - /cookie/0.4.2: + /cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} dev: false - /cookies-next/2.1.1: - resolution: {integrity: sha512-AZGZPdL1hU3jCjN2UMJTGhLOYzNUN9Gm+v8BdptYIHUdwz397Et1p+sZRfvAl8pKnnmMdX2Pk9xDRKCGBum6GA==} - dependencies: - '@types/cookie': 0.4.1 - '@types/node': 16.18.11 - cookie: 0.4.2 + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} dev: false - /cors/2.8.5: + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} dependencies: @@ -875,7 +1117,7 @@ packages: vary: 1.1.2 dev: false - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -883,21 +1125,21 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /cssesc/3.0.0: + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: true - /csstype/3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true - /damerau-levenshtein/1.0.8: + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: false - /debug/3.2.7: + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -908,7 +1150,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: @@ -919,14 +1161,15 @@ packages: dependencies: ms: 2.1.2 - /deep-equal/2.2.0: - resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} + /deep-equal@2.2.1: + resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} dependencies: + array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-arguments: 1.1.1 - is-array-buffer: 3.0.1 + is-array-buffer: 3.0.2 is-date-object: 1.0.5 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 @@ -934,105 +1177,90 @@ packages: object-is: 1.1.5 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.9 dev: false - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /define-lazy-prop/2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 dev: false - /define-properties/1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.1.1 + titleize: 3.0.0 + dev: false + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: false + + /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 dev: false - /defined/1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - dev: true - - /delegates/1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false - - /detect-libc/2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} - engines: {node: '>=8'} - dev: false - - /detective/5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - dependencies: - acorn-node: 1.8.2 - defined: 1.0.1 - minimist: 1.2.7 - dev: true - - /didyoumean/1.2.2: + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: false - /dlv/1.1.3: + /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true - /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 - /ecdsa-sig-formatter/1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /electron-to-chromium/1.4.288: - resolution: {integrity: sha512-8s9aJf3YiokIrR+HOQzNOGmEHFXVUQzXM/JaViVvKdCkNUjS+lEa/uT7xw3nDVG/IgfxiIwUGkwJ6AR1pTpYsQ==} + /electron-to-chromium@1.4.417: + resolution: {integrity: sha512-8rY8HdCxuSVY8wku3i/eDac4g1b4cSbruzocenrqBlzqruAZYHjQCHIjC66dLR9DXhEHTojsC4EjhZ8KmzwXqA==} dev: true - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: false - /engine.io-client/6.2.3: - resolution: {integrity: sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==} + /engine.io-client@6.4.0: + resolution: {integrity: sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==} dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.4 - engine.io-parser: 5.0.6 - ws: 8.2.3 + engine.io-parser: 5.0.7 + ws: 8.11.0 xmlhttprequest-ssl: 2.0.0 transitivePeerDependencies: - bufferutil @@ -1040,50 +1268,50 @@ packages: - utf-8-validate dev: false - /engine.io-parser/5.0.6: - resolution: {integrity: sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==} + /engine.io-parser@5.0.7: + resolution: {integrity: sha512-P+jDFbvK6lE3n1OL+q9KuzdOFWkkZ/cMV9gol/SbVfpyqfvrfrFTOFJ6fQm2VC3PZHlU3QPhVwmbsCnauHF2MQ==} engines: {node: '>=10.0.0'} dev: false - /engine.io/6.2.1: - resolution: {integrity: sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==} + /engine.io@6.4.2: + resolution: {integrity: sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==} engines: {node: '>=10.0.0'} dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.13 - '@types/node': 18.11.18 + '@types/node': 18.16.16 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 cors: 2.8.5 debug: 4.3.4 - engine.io-parser: 5.0.6 - ws: 8.2.3 + engine.io-parser: 5.0.7 + ws: 8.11.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: false - /enhanced-resolve/5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + /enhanced-resolve@5.14.1: + resolution: {integrity: sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==} engines: {node: '>=10.13.0'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 tapable: 2.2.1 dev: false - /es-abstract/1.21.1: - resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} + /es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} dependencies: + array-buffer-byte-length: 1.0.0 available-typed-arrays: 1.0.5 call-bind: 1.0.2 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 @@ -1091,8 +1319,8 @@ packages: has-property-descriptors: 1.0.0 has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.4 - is-array-buffer: 3.0.1 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 @@ -1103,8 +1331,9 @@ packages: object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.0 safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 typed-array-length: 1.0.4 @@ -1112,11 +1341,11 @@ packages: which-typed-array: 1.1.9 dev: false - /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 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -1126,22 +1355,22 @@ packages: stop-iteration-iterator: 1.0.0 dev: false - /es-set-tostringtag/2.0.1: + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 has-tostringtag: 1.0.0 dev: false - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: false - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -1150,16 +1379,21 @@ packages: is-symbol: 1.0.4 dev: false - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-string-regexp/4.0.0: + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-next/13.1.1_iukboom6ndih5an6iafl45j2fe: + /eslint-config-next@13.1.1(eslint@8.31.0)(typescript@4.9.4): resolution: {integrity: sha512-/5S2XGWlGaiqrRhzpn51ux5JUSLwx8PVK2keLi5xk7QmhfYB8PqE6R6SlVw6hgnf/VexvUXSrlNJ/su00NhtHQ==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -1169,23 +1403,23 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.1.1 - '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.49.0_iukboom6ndih5an6iafl45j2fe + '@rushstack/eslint-patch': 1.3.0 + '@typescript-eslint/parser': 5.59.8(eslint@8.31.0)(typescript@4.9.4) eslint: 8.31.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3_vz4tyq5r7fh66imfi352lmrvhq - eslint-plugin-import: 2.27.5_budephcjhl3xok33fyaihrsbai - eslint-plugin-jsx-a11y: 6.7.1_eslint@8.31.0 - eslint-plugin-react: 7.32.2_eslint@8.31.0 - eslint-plugin-react-hooks: 4.6.0_eslint@8.31.0 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.31.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-typescript@3.5.5)(eslint@8.31.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.31.0) + eslint-plugin-react: 7.32.2(eslint@8.31.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.31.0) typescript: 4.9.4 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: false - /eslint-config-prettier/8.6.0_eslint@8.31.0: - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + /eslint-config-prettier@8.8.0(eslint@8.31.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -1193,38 +1427,42 @@ packages: eslint: 8.31.0 dev: true - /eslint-import-resolver-node/0.3.7: + /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.11.0 - resolve: 1.22.1 + is-core-module: 2.12.1 + resolve: 1.22.2 transitivePeerDependencies: - supports-color dev: false - /eslint-import-resolver-typescript/3.5.3_vz4tyq5r7fh66imfi352lmrvhq: - resolution: {integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==} + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.31.0): + resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: debug: 4.3.4 - enhanced-resolve: 5.12.0 + enhanced-resolve: 5.14.1 eslint: 8.31.0 - eslint-plugin-import: 2.27.5_budephcjhl3xok33fyaihrsbai - get-tsconfig: 4.3.0 - globby: 13.1.3 - is-core-module: 2.11.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.31.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-typescript@3.5.5)(eslint@8.31.0) + get-tsconfig: 4.6.0 + globby: 13.1.4 + is-core-module: 2.12.1 is-glob: 4.0.3 synckit: 0.8.5 transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack - supports-color dev: false - /eslint-module-utils/2.7.4_nno2sl3hzjym6xvv4uuwqhiili: - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.31.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -1244,16 +1482,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.49.0_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/parser': 5.59.8(eslint@8.31.0)(typescript@4.9.4) debug: 3.2.7 eslint: 8.31.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3_vz4tyq5r7fh66imfi352lmrvhq + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.31.0) transitivePeerDependencies: - supports-color dev: false - /eslint-plugin-import/2.27.5_budephcjhl3xok33fyaihrsbai: + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-typescript@3.5.5)(eslint@8.31.0): resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} engines: {node: '>=4'} peerDependencies: @@ -1263,7 +1501,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.49.0_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/parser': 5.59.8(eslint@8.31.0)(typescript@4.9.4) array-includes: 3.1.6 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 @@ -1271,33 +1509,33 @@ packages: doctrine: 2.1.0 eslint: 8.31.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_nno2sl3hzjym6xvv4uuwqhiili + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.59.8)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.31.0) has: 1.0.3 - is-core-module: 2.11.0 + is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 - resolve: 1.22.1 + resolve: 1.22.2 semver: 6.3.0 - tsconfig-paths: 3.14.1 + tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: false - /eslint-plugin-jsx-a11y/6.7.1_eslint@8.31.0: + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.31.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.22.3 aria-query: 5.1.3 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.6.3 + axe-core: 4.7.2 axobject-query: 3.1.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 @@ -1311,7 +1549,7 @@ packages: semver: 6.3.0 dev: false - /eslint-plugin-react-hooks/4.6.0_eslint@8.31.0: + /eslint-plugin-react-hooks@4.6.0(eslint@8.31.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: @@ -1320,7 +1558,7 @@ packages: eslint: 8.31.0 dev: false - /eslint-plugin-react/7.32.2_eslint@8.31.0: + /eslint-plugin-react@7.32.2(eslint@8.31.0): resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: @@ -1344,14 +1582,14 @@ packages: string.prototype.matchall: 4.0.8 dev: false - /eslint-scope/7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - /eslint-utils/3.0.0_eslint@8.31.0: + /eslint-utils@3.0.0(eslint@8.31.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: @@ -1360,21 +1598,21 @@ packages: eslint: 8.31.0 eslint-visitor-keys: 2.1.0 - /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: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint/8.31.0: + /eslint@8.31.0: resolution: {integrity: sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -1383,11 +1621,11 @@ packages: 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.31.0 - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 + eslint-scope: 7.2.0 + eslint-utils: 3.0.0(eslint@8.31.0) + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 + esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -1400,7 +1638,7 @@ packages: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.3.0 + js-sdsl: 4.4.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -1415,38 +1653,68 @@ packages: transitivePeerDependencies: - supports-color - /espree/9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + /espree@9.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} 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 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.1 - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 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/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'} - /fast-deep-equal/3.1.3: + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: false + + /execa@7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: false + + /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: @@ -1456,138 +1724,135 @@ 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.15.0: + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - /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/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 - /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: false - /fraction.js/4.2.0: + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /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: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 functions-have-names: 1.2.3 dev: false - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: false - /gauge/3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: false - - /get-intrinsic/1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 + has-proto: 1.0.1 has-symbols: 1.0.3 dev: false - /get-symbol-description/1.0.0: + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: false + + /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.0 + get-intrinsic: 1.2.1 dev: false - /get-tsconfig/4.3.0: - resolution: {integrity: sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==} + /get-tsconfig@4.6.0: + resolution: {integrity: sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==} + dependencies: + resolve-pkg-maps: 1.0.0 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.7: + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} dependencies: fs.realpath: 1.0.0 @@ -1598,7 +1863,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 @@ -1608,24 +1873,25 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /globals/13.20.0: + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.1.4 + define-properties: 1.2.0 dev: false - /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: @@ -1637,8 +1903,8 @@ packages: slash: 3.0.0 dev: false - /globby/13.1.3: - resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} + /globby@13.1.4: + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 @@ -1648,111 +1914,117 @@ packages: slash: 4.0.0 dev: false - /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.0 + get-intrinsic: 1.2.1 dev: false - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: false - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: false - /has-flag/4.0.0: + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /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.0 + get-intrinsic: 1.2.1 dev: false - /has-proto/1.0.1: + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} dev: false - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: false - /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 dev: false - /has-unicode/2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false - - /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 - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + /http-status@1.6.2: + resolution: {integrity: sha512-oUExvfNckrpTpDazph7kNG8sQi5au3BeTo0idaZFXEhTaJKu7GNJCLHI0rYY2wljm548MSTM+Ljj/c6anqu2zQ==} + engines: {node: '>= 0.4.0'} dev: false - /ignore/5.2.4: + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: false + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: false + + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - /immutable/4.2.2: - resolution: {integrity: sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==} + /immer@10.0.2: + resolution: {integrity: sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==} + dev: false - /import-fresh/3.3.0: + /immutable@4.3.0: + resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} + + /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 - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - /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.4: - resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 dev: false - /is-arguments/1.1.1: + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: @@ -1760,27 +2032,27 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-array-buffer/3.0.1: - resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 is-typed-array: 1.1.10 dev: false - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: false - /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: @@ -1788,69 +2060,78 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: false - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 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 dev: false - /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-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: false + + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /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-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: false + + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: false - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: false - /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 dev: false - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -1858,31 +2139,41 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-set/2.0.2: + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: false - /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 dev: false - /is-string/1.0.7: + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /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 dev: false - /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: @@ -1893,74 +2184,82 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-weakmap/2.0.1: + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: false - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: false - /is-weakset/2.0.2: + /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 dev: false - /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: false - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /js-sdsl/4.3.0: - resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} + /javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + dev: true - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /jiti@1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + hasBin: true + dev: true + + /jose@4.14.4: + resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} dev: false - /js-yaml/4.1.0: + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - /json-schema-traverse/0.4.1: + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - /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.2: + /json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: false - /jsonwebtoken/9.0.0: - resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} - engines: {node: '>=12', npm: '>=6'} - dependencies: - jws: 3.2.2 - lodash: 4.17.21 - ms: 2.1.3 - semver: 7.3.8 - dev: false - - /jsx-ast-utils/3.3.3: + /jsx-ast-utils@3.3.3: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} dependencies: @@ -1968,157 +2267,164 @@ packages: object.assign: 4.1.4 dev: false - /jwa/1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} dev: false - /jws/3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - dev: false - - /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 - /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.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} dev: true - /locate-path/6.0.0: + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - 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 dev: false - /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 dev: false - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: false - /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: false - /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: false - /minimatch/3.1.2: + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: false + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: false + + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - - /minipass/3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false - /minipass/4.0.0: - resolution: {integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: false - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: false - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - 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 - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 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==} - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: false - /next/13.1.1_3duxcpitbtplz62feflag7fwby: + /next-auth@4.22.1(next@13.1.1)(nodemailer@6.9.3)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA==} + peerDependencies: + next: ^12.2.5 || ^13 + nodemailer: ^6.6.5 + react: ^17.0.2 || ^18 + react-dom: ^17.0.2 || ^18 + peerDependenciesMeta: + nodemailer: + optional: true + dependencies: + '@babel/runtime': 7.22.3 + '@panva/hkdf': 1.1.1 + cookie: 0.5.0 + jose: 4.14.4 + next: 13.1.1(react-dom@18.2.0)(react@18.2.0)(sass@1.62.1) + nodemailer: 6.9.3 + oauth: 0.9.15 + openid-client: 5.4.2 + preact: 10.15.1 + preact-render-to-string: 5.2.6(preact@10.15.1) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + uuid: 8.3.2 + dev: false + + /next@13.1.1(react-dom@18.2.0)(react@18.2.0)(sass@1.62.1): resolution: {integrity: sha512-R5eBAaIa3X7LJeYvv1bMdGnAVF4fVToEjim7MkflceFPuANY3YyvFxXee/A+acrSYwYPvOvf7f6v/BM/48ea5w==} engines: {node: '>=14.6.0'} hasBin: true @@ -2138,12 +2444,12 @@ packages: dependencies: '@next/env': 13.1.1 '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001449 + caniuse-lite: 1.0.30001492 postcss: 8.4.14 react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - sass: 1.57.1 - styled-jsx: 5.1.1_react@18.2.0 + react-dom: 18.2.0(react@18.2.0) + sass: 1.62.1 + styled-jsx: 5.1.1(react@18.2.0) optionalDependencies: '@next/swc-android-arm-eabi': 13.1.1 '@next/swc-android-arm64': 13.1.1 @@ -2163,138 +2469,161 @@ packages: - babel-plugin-macros dev: false - /node-addon-api/5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - dev: false - - /node-fetch/2.6.8: - resolution: {integrity: sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /node-releases/2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + /node-releases@2.0.12: + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} dev: true - /nopt/5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 + /nodemailer@6.9.3: + resolution: {integrity: sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg==} + engines: {node: '>=6.0.0'} dev: false - /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 - /npmlog/5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 + path-key: 3.1.1 dev: false - /object-assign/4.1.1: + /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: false + + /oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + dev: false + + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + + /object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} dev: false - /object-hash/3.0.0: + /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} dev: true - /object-inspect/1.12.3: + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: false - /object-is/1.1.5: + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 dev: false - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: false - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 dev: false - /object.entries/1.1.6: + /object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: false - /object.fromentries/2.0.6: + /object.fromentries@2.0.6: resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: false - /object.hasown/1.1.2: + /object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: false - /object.values/1.1.6: + /object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: false - /once/1.4.0: + /oidc-token-hash@5.0.3: + resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} + engines: {node: ^10.13.0 || >=12.0.0} + dev: false + + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /open/8.4.0: - resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: false + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 + mimic-fn: 4.0.0 + dev: false + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 is-wsl: 2.2.0 dev: false - /optionator/0.9.1: + /openid-client@5.4.2: + resolution: {integrity: sha512-lIhsdPvJ2RneBm3nGBBhQchpe3Uka//xf7WPHTIglery8gnckvW7Bd9IaQzekzXJvWthCMyi/xVEyGW0RFPytw==} + dependencies: + jose: 4.14.4 + lru-cache: 6.0.0 + object-hash: 2.2.0 + oidc-token-hash: 5.0.3 + dev: false + + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -2305,81 +2634,91 @@ packages: type-check: 0.4.0 word-wrap: 1.2.3 - /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 - /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 - /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 - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - /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-parse/1.0.7: + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: false + + /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'} dev: false - /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'} - /pify/2.3.0: + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: true - /postcss-import/14.1.0_postcss@8.4.21: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} + /pirates@4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /postcss-import@15.1.0(postcss@8.4.24): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.21 + postcss: 8.4.24 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.1 + resolve: 1.22.2 dev: true - /postcss-js/4.0.0_postcss@8.4.21: - resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + /postcss-js@4.0.1(postcss@8.4.24): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: - postcss: ^8.3.3 + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.21 + postcss: 8.4.24 dev: true - /postcss-load-config/3.1.4_postcss@8.4.21: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} + /postcss-load-config@4.0.1(postcss@8.4.24): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} peerDependencies: postcss: '>=8.0.9' ts-node: '>=9.0.0' @@ -2389,60 +2728,73 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.0.6 - postcss: 8.4.21 - yaml: 1.10.2 + lilconfig: 2.1.0 + postcss: 8.4.24 + yaml: 2.3.1 dev: true - /postcss-nested/6.0.0_postcss@8.4.21: - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + /postcss-nested@6.0.1(postcss@8.4.24): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 dev: true - /postcss-selector-parser/6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 dev: true - /postcss-value-parser/4.2.0: + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss/8.4.14: + /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: false - /postcss/8.4.21: - resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + /postcss@8.4.24: + resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true - /prelude-ls/1.2.1: + /preact-render-to-string@5.2.6(preact@10.15.1): + resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + peerDependencies: + preact: '>=10' + dependencies: + preact: 10.15.1 + pretty-format: 3.8.0 + dev: false + + /preact@10.15.1: + resolution: {integrity: sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==} + dev: false + + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - /prettier-plugin-tailwindcss/0.2.2_prettier@2.8.3: - resolution: {integrity: sha512-5RjUbWRe305pUpc48MosoIp6uxZvZxrM6GyOgsbGLTce+ehePKNm7ziW2dLG2air9aXbGuXlHVSQQw4Lbosq3w==} + /prettier-plugin-tailwindcss@0.2.8(@trivago/prettier-plugin-sort-imports@4.1.1)(prettier@2.8.8): + resolution: {integrity: sha512-KgPcEnJeIijlMjsA6WwYgRs5rh3/q76oInqtMXBA/EMcamrcYJpyhtRhyX1ayT9hnHlHTuO8sIifHF10WuSDKg==} engines: {node: '>=12.17.0'} peerDependencies: - '@prettier/plugin-php': '*' + '@ianvs/prettier-plugin-sort-imports': '*' '@prettier/plugin-pug': '*' '@shopify/prettier-plugin-liquid': '*' '@shufo/prettier-plugin-blade': '*' @@ -2458,7 +2810,7 @@ packages: prettier-plugin-svelte: '*' prettier-plugin-twig-melody: '*' peerDependenciesMeta: - '@prettier/plugin-php': + '@ianvs/prettier-plugin-sort-imports': optional: true '@prettier/plugin-pug': optional: true @@ -2487,25 +2839,30 @@ packages: prettier-plugin-twig-melody: optional: true dependencies: - prettier: 2.8.3 + '@trivago/prettier-plugin-sort-imports': 4.1.1(prettier@2.8.8) + prettier: 2.8.8 dev: true - /prettier/2.8.3: - resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /prisma/4.9.0: - resolution: {integrity: sha512-bS96oZ5oDFXYgoF2l7PJ3Mp1wWWfLOo8B/jAfbA2Pn0Wm5Z/owBHzaMQKS3i1CzVBDWWPVnOohmbJmjvkcHS5w==} + /pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + dev: false + + /prisma@4.15.0: + resolution: {integrity: sha512-iKZZpobPl48gTcSZVawLMQ3lEy6BnXwtoMj7hluoGFYu2kQ6F9LBuBrUyF95zRVnNo8/3KzLXJXJ5TEnLSJFiA==} engines: {node: '>=14.17'} hasBin: true requiresBuild: true dependencies: - '@prisma/engines': 4.9.0 + '@prisma/engines': 4.15.0 dev: false - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -2513,19 +2870,14 @@ packages: react-is: 16.13.1 dev: false - /punycode/2.3.0: + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true - - /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 @@ -2535,187 +2887,207 @@ packages: scheduler: 0.23.0 dev: false - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false - /react/18.2.0: + /react-otp-input@3.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-YzOYnol7NodV1KZdy9Y4y3jV4u3mlug98WfJqwV4hs7+zeRqzp5jcA/+onZ6OHjpdOMRQvA675xAHB5ynSmViA==} + peerDependencies: + react: '>=16.8.6 || ^17.0.0 || ^18.0.0' + react-dom: '>=16.8.6 || ^17.0.0 || ^18.0.0' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-toastify@9.1.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==} + peerDependencies: + react: '>=16' + react-dom: '>=16' + dependencies: + clsx: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 dev: false - /read-cache/1.0.0: + /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 dev: true - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: false - - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: false - /regexp.prototype.flags/1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 functions-have-names: 1.2.3 dev: false - /regexpp/3.2.0: + /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: false + + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.12.1 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: - is-core-module: 2.11.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: false - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - /run-parallel/1.2.0: + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: false + + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - - /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.0 + get-intrinsic: 1.2.1 is-regex: 1.1.4 dev: false - /sass/1.57.1: - resolution: {integrity: sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==} - engines: {node: '>=12.0.0'} + /sass@1.62.1: + resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==} + engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.5.3 - immutable: 4.2.2 + immutable: 4.3.0 source-map-js: 1.0.2 - /scheduler/0.23.0: + /scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 dev: false - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: false - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: false - /set-blocking/2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false - - /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/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.0 + get-intrinsic: 1.2.1 object-inspect: 1.12.3 dev: false - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: false - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} dev: false - /socket.io-adapter/2.4.0: - resolution: {integrity: sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==} + /socket.io-adapter@2.5.2: + resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} + dependencies: + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate dev: false - /socket.io-client/4.5.4: - resolution: {integrity: sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==} + /socket.io-client@4.6.2: + resolution: {integrity: sha512-OwWrMbbA8wSqhBAR0yoPK6EdQLERQAYjXb3A0zLpgxfM1ZGLKoxHx8gVmCHA6pcclRX5oA/zvQf7bghAS11jRA==} engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.4 - engine.io-client: 6.2.3 - socket.io-parser: 4.2.2 + engine.io-client: 6.4.0 + socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: false - /socket.io-parser/4.2.2: - resolution: {integrity: sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==} + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.0 @@ -2724,93 +3096,102 @@ packages: - supports-color dev: false - /socket.io/4.5.4: - resolution: {integrity: sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==} + /socket.io@4.6.2: + resolution: {integrity: sha512-Vp+lSks5k0dewYTfwgPT9UeGGd+ht7sCpB7p0e83VgO4X/AHYWhXITMrNk/pg8syY2bpx23ptClCQuHhqi2BgQ==} engines: {node: '>=10.0.0'} dependencies: accepts: 1.3.8 base64id: 2.0.0 debug: 4.3.4 - engine.io: 6.2.1 - socket.io-adapter: 2.4.0 - socket.io-parser: 4.2.2 + engine.io: 6.4.2 + socket.io-adapter: 2.5.2 + socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: false - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /stop-iteration-iterator/1.0.0: + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: - internal-slot: 1.0.4 + internal-slot: 1.0.5 dev: false - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /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 - define-properties: 1.1.4 - es-abstract: 1.21.1 - get-intrinsic: 1.2.0 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.1 has-symbols: 1.0.3 - internal-slot: 1.0.4 - regexp.prototype.flags: 1.4.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 dev: false - /string.prototype.trimend/1.0.6: + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: false - /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.1.4 - es-abstract: 1.21.1 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: false - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /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-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: false - /strip-json-comments/3.1.1: + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: false + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: false + + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /styled-jsx/5.1.1_react@18.2.0: + /styled-jsx@5.1.1(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -2827,113 +3208,136 @@ packages: react: 18.2.0 dev: false - /supports-color/7.2.0: + /sucrase@3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /synckit/0.8.5: + /synckit@0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: - '@pkgr/utils': 2.3.1 - tslib: 2.5.0 + '@pkgr/utils': 2.4.1 + tslib: 2.5.2 dev: false - /tailwindcss/3.2.4_postcss@8.4.21: - resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} - engines: {node: '>=12.13.0'} + /tailwindcss@3.3.2: + resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + engines: {node: '>=14.0.0'} hasBin: true - peerDependencies: - postcss: ^8.0.9 dependencies: + '@alloc/quick-lru': 5.2.0 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 + jiti: 1.18.2 + lilconfig: 2.1.0 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.0_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: 8.4.24 + postcss-import: 15.1.0(postcss@8.4.24) + postcss-js: 4.0.1(postcss@8.4.24) + postcss-load-config: 4.0.1(postcss@8.4.24) + postcss-nested: 6.0.1(postcss@8.4.24) + postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.1 + resolve: 1.22.2 + sucrase: 3.32.0 transitivePeerDependencies: - ts-node dev: true - /tapable/2.2.1: + /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} dev: false - /tar/6.1.13: - resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 4.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - /tiny-glob/0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} dev: false - /to-regex-range/5.0.1: + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true - /tsconfig-paths/3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 - minimist: 1.2.7 + minimist: 1.2.8 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.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tslib@2.5.2: + resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} dev: false - /tsutils/3.21.0_typescript@4.9.4: + /tsutils@3.21.0(typescript@4.9.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: @@ -2943,17 +3347,17 @@ packages: typescript: 4.9.4 dev: false - /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-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - /typed-array-length/1.0.4: + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 @@ -2961,13 +3365,13 @@ packages: is-typed-array: 1.1.10 dev: false - /typescript/4.9.4: + /typescript@4.9.4: resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true dev: false - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -2976,47 +3380,55 @@ packages: which-boxed-primitive: 1.0.2 dev: false - /update-browserslist-db/1.0.10_browserslist@4.21.5: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + /unique-names-generator@4.7.1: + resolution: {integrity: sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow==} + engines: {node: '>=8'} + dev: false + + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: false + + /update-browserslist-db@1.0.11(browserslist@4.21.7): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.5 + browserslist: 4.21.7 escalade: 3.1.1 picocolors: 1.0.0 dev: true - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false - /uuid/9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: false - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: false - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -3026,7 +3438,7 @@ packages: is-symbol: 1.0.4 dev: false - /which-collection/1.0.1: + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 @@ -3035,7 +3447,7 @@ packages: is-weakset: 2.0.2 dev: false - /which-typed-array/1.1.9: + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -3047,28 +3459,22 @@ packages: is-typed-array: 1.1.10 dev: false - /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: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 4.2.3 - dev: false - - /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'} - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /ws/8.2.3: - resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==} + /ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3080,25 +3486,53 @@ packages: optional: true dev: false - /xmlhttprequest-ssl/2.0.0: + /xmlhttprequest-ssl@2.0.0: resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} engines: {node: '>=0.4.0'} dev: false - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: false - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} + /yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + + /zod-prisma-types@2.7.1: + resolution: {integrity: sha512-6zGN3Sm/q/IyrgxPD5jxEXVFBbjft7ev2lBijeFTmRH1fewlrOSn3bt6jSlj9SctYNrJDGrJ48mJdZVKL7Mucg==} + hasBin: true + dependencies: + '@prisma/generator-helper': 4.15.0 + code-block-writer: 11.0.3 + lodash: 4.17.21 + zod: 3.21.1 + transitivePeerDependencies: + - supports-color + dev: false + + /zod@3.21.1: + resolution: {integrity: sha512-+dTu2m6gmCbO9Ahm4ZBDapx2O6ZY9QSPXst2WXjcznPMwf2YNpn3RevLx4KkZp1OPW/ouFcoBtBzFz/LeY69oA==} + dev: false + + /zustand@4.3.8(immer@10.0.2)(react@18.2.0): + resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==} + engines: {node: '>=12.7.0'} + peerDependencies: + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + immer: + optional: true + react: + optional: true + dependencies: + immer: 10.0.2 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false diff --git a/leaky-ships/prettier.config.js b/leaky-ships/prettier.config.js new file mode 100644 index 0000000..01e3580 --- /dev/null +++ b/leaky-ships/prettier.config.js @@ -0,0 +1,8 @@ +module.exports = { + semi: false, + plugins: [ + "@trivago/prettier-plugin-sort-imports", + "prettier-plugin-tailwindcss", // MUST come last + ], + pluginSearchDirs: false, +} diff --git a/leaky-ships/prisma/generated/zod/index.ts b/leaky-ships/prisma/generated/zod/index.ts new file mode 100644 index 0000000..54f56d5 --- /dev/null +++ b/leaky-ships/prisma/generated/zod/index.ts @@ -0,0 +1,4579 @@ +import { z } from 'zod'; +import type { Prisma } from '@prisma/client'; + +///////////////////////////////////////// +// HELPER FUNCTIONS +///////////////////////////////////////// + + +///////////////////////////////////////// +// ENUMS +///////////////////////////////////////// + +export const AccountScalarFieldEnumSchema = z.enum(['id','userId','type','provider','providerAccountId','refresh_token','access_token','expires_at','ext_expires_in','token_type','scope','id_token','session_state','oauth_token_secret','oauth_token']); + +export const ChatScalarFieldEnumSchema = z.enum(['id','createdAt','message','event','user_game_id']); + +export const GameScalarFieldEnumSchema = z.enum(['id','createdAt','updatedAt','state','allowSpectators','allowSpecials','allowChat','allowMarkDraw']); + +export const GamepinScalarFieldEnumSchema = z.enum(['id','createdAt','pin','gameId']); + +export const MoveScalarFieldEnumSchema = z.enum(['id','createdAt','index','user_game_id']); + +export const SessionScalarFieldEnumSchema = z.enum(['id','sessionToken','userId','expires']); + +export const SortOrderSchema = z.enum(['asc','desc']); + +export const TransactionIsolationLevelSchema = z.enum(['ReadUncommitted','ReadCommitted','RepeatableRead','Serializable']); + +export const UserScalarFieldEnumSchema = z.enum(['id','name','email','emailVerified','image','createdAt','updatedAt']); + +export const User_GameScalarFieldEnumSchema = z.enum(['id','createdAt','gameId','userId','index']); + +export const VerificationTokenScalarFieldEnumSchema = z.enum(['identifier','token','expires']); + +export const GameStateSchema = z.enum(['launching','running','ended']); + +export type GameStateType = `${z.infer}` + +///////////////////////////////////////// +// MODELS +///////////////////////////////////////// + +///////////////////////////////////////// +// ACCOUNT SCHEMA +///////////////////////////////////////// + +export const AccountSchema = z.object({ + id: z.string().cuid(), + userId: z.string(), + type: z.string(), + provider: z.string(), + providerAccountId: z.string(), + refresh_token: z.string().nullable(), + access_token: z.string().nullable(), + expires_at: z.number().int().nullable(), + ext_expires_in: z.number().int().nullable(), + token_type: z.string().nullable(), + scope: z.string().nullable(), + id_token: z.string().nullable(), + session_state: z.string().nullable(), + oauth_token_secret: z.string().nullable(), + oauth_token: z.string().nullable(), +}) + +export type Account = z.infer + +///////////////////////////////////////// +// SESSION SCHEMA +///////////////////////////////////////// + +export const SessionSchema = z.object({ + id: z.string().cuid(), + sessionToken: z.string(), + userId: z.string(), + expires: z.coerce.date(), +}) + +export type Session = z.infer + +///////////////////////////////////////// +// USER SCHEMA +///////////////////////////////////////// + +export const UserSchema = z.object({ + id: z.string().cuid(), + name: z.string().nullable(), + email: z.string().nullable(), + emailVerified: z.coerce.date().nullable(), + image: z.string().nullable(), + createdAt: z.coerce.date(), + updatedAt: z.coerce.date(), +}) + +export type User = z.infer + +///////////////////////////////////////// +// VERIFICATION TOKEN SCHEMA +///////////////////////////////////////// + +export const VerificationTokenSchema = z.object({ + identifier: z.string(), + token: z.string(), + expires: z.coerce.date(), +}) + +export type VerificationToken = z.infer + +///////////////////////////////////////// +// GAME SCHEMA +///////////////////////////////////////// + +export const GameSchema = z.object({ + state: GameStateSchema, + id: z.string().cuid(), + createdAt: z.coerce.date(), + updatedAt: z.coerce.date(), + allowSpectators: z.boolean(), + allowSpecials: z.boolean(), + allowChat: z.boolean(), + allowMarkDraw: z.boolean(), +}) + +export type Game = z.infer + +///////////////////////////////////////// +// GAMEPIN SCHEMA +///////////////////////////////////////// + +export const GamepinSchema = z.object({ + id: z.string().cuid(), + createdAt: z.coerce.date(), + pin: z.string(), + gameId: z.string(), +}) + +export type Gamepin = z.infer + +///////////////////////////////////////// +// USER GAME SCHEMA +///////////////////////////////////////// + +export const User_GameSchema = z.object({ + id: z.string().cuid(), + createdAt: z.coerce.date(), + gameId: z.string(), + userId: z.string(), + index: z.number().int(), +}) + +export type User_Game = z.infer + +///////////////////////////////////////// +// MOVE SCHEMA +///////////////////////////////////////// + +export const MoveSchema = z.object({ + id: z.string().cuid(), + createdAt: z.coerce.date(), + index: z.number().int(), + user_game_id: z.string(), +}) + +export type Move = z.infer + +///////////////////////////////////////// +// CHAT SCHEMA +///////////////////////////////////////// + +export const ChatSchema = z.object({ + id: z.string().cuid(), + createdAt: z.coerce.date(), + message: z.string().nullable(), + event: z.string().nullable(), + user_game_id: z.string(), +}) + +export type Chat = z.infer + +///////////////////////////////////////// +// SELECT & INCLUDE +///////////////////////////////////////// + +// ACCOUNT +//------------------------------------------------------ + +export const AccountIncludeSchema: z.ZodType = z.object({ + user: z.union([z.boolean(),z.lazy(() => UserArgsSchema)]).optional(), +}).strict() + +export const AccountArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => AccountSelectSchema).optional(), + include: z.lazy(() => AccountIncludeSchema).optional(), +}).strict(); + +export const AccountSelectSchema: z.ZodType = z.object({ + id: z.boolean().optional(), + userId: z.boolean().optional(), + type: z.boolean().optional(), + provider: z.boolean().optional(), + providerAccountId: z.boolean().optional(), + refresh_token: z.boolean().optional(), + access_token: z.boolean().optional(), + expires_at: z.boolean().optional(), + ext_expires_in: z.boolean().optional(), + token_type: z.boolean().optional(), + scope: z.boolean().optional(), + id_token: z.boolean().optional(), + session_state: z.boolean().optional(), + oauth_token_secret: z.boolean().optional(), + oauth_token: z.boolean().optional(), + user: z.union([z.boolean(),z.lazy(() => UserArgsSchema)]).optional(), +}).strict() + +// SESSION +//------------------------------------------------------ + +export const SessionIncludeSchema: z.ZodType = z.object({ + user: z.union([z.boolean(),z.lazy(() => UserArgsSchema)]).optional(), +}).strict() + +export const SessionArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => SessionSelectSchema).optional(), + include: z.lazy(() => SessionIncludeSchema).optional(), +}).strict(); + +export const SessionSelectSchema: z.ZodType = z.object({ + id: z.boolean().optional(), + sessionToken: z.boolean().optional(), + userId: z.boolean().optional(), + expires: z.boolean().optional(), + user: z.union([z.boolean(),z.lazy(() => UserArgsSchema)]).optional(), +}).strict() + +// USER +//------------------------------------------------------ + +export const UserIncludeSchema: z.ZodType = z.object({ + games: z.union([z.boolean(),z.lazy(() => User_GameFindManyArgsSchema)]).optional(), + accounts: z.union([z.boolean(),z.lazy(() => AccountFindManyArgsSchema)]).optional(), + sessions: z.union([z.boolean(),z.lazy(() => SessionFindManyArgsSchema)]).optional(), + _count: z.union([z.boolean(),z.lazy(() => UserCountOutputTypeArgsSchema)]).optional(), +}).strict() + +export const UserArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => UserSelectSchema).optional(), + include: z.lazy(() => UserIncludeSchema).optional(), +}).strict(); + +export const UserCountOutputTypeArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => UserCountOutputTypeSelectSchema).nullish(), +}).strict(); + +export const UserCountOutputTypeSelectSchema: z.ZodType = z.object({ + games: z.boolean().optional(), + accounts: z.boolean().optional(), + sessions: z.boolean().optional(), +}).strict(); + +export const UserSelectSchema: z.ZodType = z.object({ + id: z.boolean().optional(), + name: z.boolean().optional(), + email: z.boolean().optional(), + emailVerified: z.boolean().optional(), + image: z.boolean().optional(), + createdAt: z.boolean().optional(), + updatedAt: z.boolean().optional(), + games: z.union([z.boolean(),z.lazy(() => User_GameFindManyArgsSchema)]).optional(), + accounts: z.union([z.boolean(),z.lazy(() => AccountFindManyArgsSchema)]).optional(), + sessions: z.union([z.boolean(),z.lazy(() => SessionFindManyArgsSchema)]).optional(), + _count: z.union([z.boolean(),z.lazy(() => UserCountOutputTypeArgsSchema)]).optional(), +}).strict() + +// VERIFICATION TOKEN +//------------------------------------------------------ + +export const VerificationTokenSelectSchema: z.ZodType = z.object({ + identifier: z.boolean().optional(), + token: z.boolean().optional(), + expires: z.boolean().optional(), +}).strict() + +// GAME +//------------------------------------------------------ + +export const GameIncludeSchema: z.ZodType = z.object({ + gamePin: z.union([z.boolean(),z.lazy(() => GamepinArgsSchema)]).optional(), + users: z.union([z.boolean(),z.lazy(() => User_GameFindManyArgsSchema)]).optional(), + _count: z.union([z.boolean(),z.lazy(() => GameCountOutputTypeArgsSchema)]).optional(), +}).strict() + +export const GameArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => GameSelectSchema).optional(), + include: z.lazy(() => GameIncludeSchema).optional(), +}).strict(); + +export const GameCountOutputTypeArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => GameCountOutputTypeSelectSchema).nullish(), +}).strict(); + +export const GameCountOutputTypeSelectSchema: z.ZodType = z.object({ + users: z.boolean().optional(), +}).strict(); + +export const GameSelectSchema: z.ZodType = z.object({ + id: z.boolean().optional(), + createdAt: z.boolean().optional(), + updatedAt: z.boolean().optional(), + state: z.boolean().optional(), + allowSpectators: z.boolean().optional(), + allowSpecials: z.boolean().optional(), + allowChat: z.boolean().optional(), + allowMarkDraw: z.boolean().optional(), + gamePin: z.union([z.boolean(),z.lazy(() => GamepinArgsSchema)]).optional(), + users: z.union([z.boolean(),z.lazy(() => User_GameFindManyArgsSchema)]).optional(), + _count: z.union([z.boolean(),z.lazy(() => GameCountOutputTypeArgsSchema)]).optional(), +}).strict() + +// GAMEPIN +//------------------------------------------------------ + +export const GamepinIncludeSchema: z.ZodType = z.object({ + game: z.union([z.boolean(),z.lazy(() => GameArgsSchema)]).optional(), +}).strict() + +export const GamepinArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => GamepinSelectSchema).optional(), + include: z.lazy(() => GamepinIncludeSchema).optional(), +}).strict(); + +export const GamepinSelectSchema: z.ZodType = z.object({ + id: z.boolean().optional(), + createdAt: z.boolean().optional(), + pin: z.boolean().optional(), + gameId: z.boolean().optional(), + game: z.union([z.boolean(),z.lazy(() => GameArgsSchema)]).optional(), +}).strict() + +// USER GAME +//------------------------------------------------------ + +export const User_GameIncludeSchema: z.ZodType = z.object({ + moves: z.union([z.boolean(),z.lazy(() => MoveFindManyArgsSchema)]).optional(), + chats: z.union([z.boolean(),z.lazy(() => ChatFindManyArgsSchema)]).optional(), + game: z.union([z.boolean(),z.lazy(() => GameArgsSchema)]).optional(), + user: z.union([z.boolean(),z.lazy(() => UserArgsSchema)]).optional(), + _count: z.union([z.boolean(),z.lazy(() => User_GameCountOutputTypeArgsSchema)]).optional(), +}).strict() + +export const User_GameArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => User_GameSelectSchema).optional(), + include: z.lazy(() => User_GameIncludeSchema).optional(), +}).strict(); + +export const User_GameCountOutputTypeArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => User_GameCountOutputTypeSelectSchema).nullish(), +}).strict(); + +export const User_GameCountOutputTypeSelectSchema: z.ZodType = z.object({ + moves: z.boolean().optional(), + chats: z.boolean().optional(), +}).strict(); + +export const User_GameSelectSchema: z.ZodType = z.object({ + id: z.boolean().optional(), + createdAt: z.boolean().optional(), + gameId: z.boolean().optional(), + userId: z.boolean().optional(), + index: z.boolean().optional(), + moves: z.union([z.boolean(),z.lazy(() => MoveFindManyArgsSchema)]).optional(), + chats: z.union([z.boolean(),z.lazy(() => ChatFindManyArgsSchema)]).optional(), + game: z.union([z.boolean(),z.lazy(() => GameArgsSchema)]).optional(), + user: z.union([z.boolean(),z.lazy(() => UserArgsSchema)]).optional(), + _count: z.union([z.boolean(),z.lazy(() => User_GameCountOutputTypeArgsSchema)]).optional(), +}).strict() + +// MOVE +//------------------------------------------------------ + +export const MoveIncludeSchema: z.ZodType = z.object({ + user_game: z.union([z.boolean(),z.lazy(() => User_GameArgsSchema)]).optional(), +}).strict() + +export const MoveArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => MoveSelectSchema).optional(), + include: z.lazy(() => MoveIncludeSchema).optional(), +}).strict(); + +export const MoveSelectSchema: z.ZodType = z.object({ + id: z.boolean().optional(), + createdAt: z.boolean().optional(), + index: z.boolean().optional(), + user_game_id: z.boolean().optional(), + user_game: z.union([z.boolean(),z.lazy(() => User_GameArgsSchema)]).optional(), +}).strict() + +// CHAT +//------------------------------------------------------ + +export const ChatIncludeSchema: z.ZodType = z.object({ + user_game: z.union([z.boolean(),z.lazy(() => User_GameArgsSchema)]).optional(), +}).strict() + +export const ChatArgsSchema: z.ZodType = z.object({ + select: z.lazy(() => ChatSelectSchema).optional(), + include: z.lazy(() => ChatIncludeSchema).optional(), +}).strict(); + +export const ChatSelectSchema: z.ZodType = z.object({ + id: z.boolean().optional(), + createdAt: z.boolean().optional(), + message: z.boolean().optional(), + event: z.boolean().optional(), + user_game_id: z.boolean().optional(), + user_game: z.union([z.boolean(),z.lazy(() => User_GameArgsSchema)]).optional(), +}).strict() + + +///////////////////////////////////////// +// INPUT TYPES +///////////////////////////////////////// + +export const AccountWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => AccountWhereInputSchema),z.lazy(() => AccountWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => AccountWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => AccountWhereInputSchema),z.lazy(() => AccountWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + type: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + provider: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + providerAccountId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + refresh_token: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + access_token: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + expires_at: z.union([ z.lazy(() => IntNullableFilterSchema),z.number() ]).optional().nullable(), + ext_expires_in: z.union([ z.lazy(() => IntNullableFilterSchema),z.number() ]).optional().nullable(), + token_type: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + scope: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + id_token: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + session_state: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + oauth_token_secret: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + oauth_token: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + user: z.union([ z.lazy(() => UserRelationFilterSchema),z.lazy(() => UserWhereInputSchema) ]).optional(), +}).strict(); + +export const AccountOrderByWithRelationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + type: z.lazy(() => SortOrderSchema).optional(), + provider: z.lazy(() => SortOrderSchema).optional(), + providerAccountId: z.lazy(() => SortOrderSchema).optional(), + refresh_token: z.lazy(() => SortOrderSchema).optional(), + access_token: z.lazy(() => SortOrderSchema).optional(), + expires_at: z.lazy(() => SortOrderSchema).optional(), + ext_expires_in: z.lazy(() => SortOrderSchema).optional(), + token_type: z.lazy(() => SortOrderSchema).optional(), + scope: z.lazy(() => SortOrderSchema).optional(), + id_token: z.lazy(() => SortOrderSchema).optional(), + session_state: z.lazy(() => SortOrderSchema).optional(), + oauth_token_secret: z.lazy(() => SortOrderSchema).optional(), + oauth_token: z.lazy(() => SortOrderSchema).optional(), + user: z.lazy(() => UserOrderByWithRelationInputSchema).optional() +}).strict(); + +export const AccountWhereUniqueInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + provider_providerAccountId: z.lazy(() => AccountProviderProviderAccountIdCompoundUniqueInputSchema).optional() +}).strict(); + +export const AccountOrderByWithAggregationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + type: z.lazy(() => SortOrderSchema).optional(), + provider: z.lazy(() => SortOrderSchema).optional(), + providerAccountId: z.lazy(() => SortOrderSchema).optional(), + refresh_token: z.lazy(() => SortOrderSchema).optional(), + access_token: z.lazy(() => SortOrderSchema).optional(), + expires_at: z.lazy(() => SortOrderSchema).optional(), + ext_expires_in: z.lazy(() => SortOrderSchema).optional(), + token_type: z.lazy(() => SortOrderSchema).optional(), + scope: z.lazy(() => SortOrderSchema).optional(), + id_token: z.lazy(() => SortOrderSchema).optional(), + session_state: z.lazy(() => SortOrderSchema).optional(), + oauth_token_secret: z.lazy(() => SortOrderSchema).optional(), + oauth_token: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => AccountCountOrderByAggregateInputSchema).optional(), + _avg: z.lazy(() => AccountAvgOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => AccountMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => AccountMinOrderByAggregateInputSchema).optional(), + _sum: z.lazy(() => AccountSumOrderByAggregateInputSchema).optional() +}).strict(); + +export const AccountScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => AccountScalarWhereWithAggregatesInputSchema),z.lazy(() => AccountScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => AccountScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => AccountScalarWhereWithAggregatesInputSchema),z.lazy(() => AccountScalarWhereWithAggregatesInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + type: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + provider: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + providerAccountId: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + refresh_token: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + access_token: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + expires_at: z.union([ z.lazy(() => IntNullableWithAggregatesFilterSchema),z.number() ]).optional().nullable(), + ext_expires_in: z.union([ z.lazy(() => IntNullableWithAggregatesFilterSchema),z.number() ]).optional().nullable(), + token_type: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + scope: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + id_token: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + session_state: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + oauth_token_secret: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + oauth_token: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), +}).strict(); + +export const SessionWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => SessionWhereInputSchema),z.lazy(() => SessionWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => SessionWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => SessionWhereInputSchema),z.lazy(() => SessionWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + sessionToken: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + expires: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + user: z.union([ z.lazy(() => UserRelationFilterSchema),z.lazy(() => UserWhereInputSchema) ]).optional(), +}).strict(); + +export const SessionOrderByWithRelationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + sessionToken: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional(), + user: z.lazy(() => UserOrderByWithRelationInputSchema).optional() +}).strict(); + +export const SessionWhereUniqueInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + sessionToken: z.string().optional() +}).strict(); + +export const SessionOrderByWithAggregationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + sessionToken: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => SessionCountOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => SessionMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => SessionMinOrderByAggregateInputSchema).optional() +}).strict(); + +export const SessionScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => SessionScalarWhereWithAggregatesInputSchema),z.lazy(() => SessionScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => SessionScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => SessionScalarWhereWithAggregatesInputSchema),z.lazy(() => SessionScalarWhereWithAggregatesInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + sessionToken: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + expires: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), +}).strict(); + +export const UserWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => UserWhereInputSchema),z.lazy(() => UserWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => UserWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => UserWhereInputSchema),z.lazy(() => UserWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + name: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + email: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + emailVerified: z.union([ z.lazy(() => DateTimeNullableFilterSchema),z.coerce.date() ]).optional().nullable(), + image: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + updatedAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + games: z.lazy(() => User_GameListRelationFilterSchema).optional(), + accounts: z.lazy(() => AccountListRelationFilterSchema).optional(), + sessions: z.lazy(() => SessionListRelationFilterSchema).optional() +}).strict(); + +export const UserOrderByWithRelationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + name: z.lazy(() => SortOrderSchema).optional(), + email: z.lazy(() => SortOrderSchema).optional(), + emailVerified: z.lazy(() => SortOrderSchema).optional(), + image: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional(), + games: z.lazy(() => User_GameOrderByRelationAggregateInputSchema).optional(), + accounts: z.lazy(() => AccountOrderByRelationAggregateInputSchema).optional(), + sessions: z.lazy(() => SessionOrderByRelationAggregateInputSchema).optional() +}).strict(); + +export const UserWhereUniqueInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + email: z.string().optional() +}).strict(); + +export const UserOrderByWithAggregationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + name: z.lazy(() => SortOrderSchema).optional(), + email: z.lazy(() => SortOrderSchema).optional(), + emailVerified: z.lazy(() => SortOrderSchema).optional(), + image: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => UserCountOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => UserMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => UserMinOrderByAggregateInputSchema).optional() +}).strict(); + +export const UserScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => UserScalarWhereWithAggregatesInputSchema),z.lazy(() => UserScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => UserScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => UserScalarWhereWithAggregatesInputSchema),z.lazy(() => UserScalarWhereWithAggregatesInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + name: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + email: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + emailVerified: z.union([ z.lazy(() => DateTimeNullableWithAggregatesFilterSchema),z.coerce.date() ]).optional().nullable(), + image: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + createdAt: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), + updatedAt: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), +}).strict(); + +export const VerificationTokenWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => VerificationTokenWhereInputSchema),z.lazy(() => VerificationTokenWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => VerificationTokenWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => VerificationTokenWhereInputSchema),z.lazy(() => VerificationTokenWhereInputSchema).array() ]).optional(), + identifier: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + token: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + expires: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), +}).strict(); + +export const VerificationTokenOrderByWithRelationInputSchema: z.ZodType = z.object({ + identifier: z.lazy(() => SortOrderSchema).optional(), + token: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const VerificationTokenWhereUniqueInputSchema: z.ZodType = z.object({ + token: z.string().optional(), + identifier_token: z.lazy(() => VerificationTokenIdentifierTokenCompoundUniqueInputSchema).optional() +}).strict(); + +export const VerificationTokenOrderByWithAggregationInputSchema: z.ZodType = z.object({ + identifier: z.lazy(() => SortOrderSchema).optional(), + token: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => VerificationTokenCountOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => VerificationTokenMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => VerificationTokenMinOrderByAggregateInputSchema).optional() +}).strict(); + +export const VerificationTokenScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => VerificationTokenScalarWhereWithAggregatesInputSchema),z.lazy(() => VerificationTokenScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => VerificationTokenScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => VerificationTokenScalarWhereWithAggregatesInputSchema),z.lazy(() => VerificationTokenScalarWhereWithAggregatesInputSchema).array() ]).optional(), + identifier: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + token: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + expires: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), +}).strict(); + +export const GameWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => GameWhereInputSchema),z.lazy(() => GameWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => GameWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => GameWhereInputSchema),z.lazy(() => GameWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + updatedAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + state: z.union([ z.lazy(() => EnumGameStateFilterSchema),z.lazy(() => GameStateSchema) ]).optional(), + allowSpectators: z.union([ z.lazy(() => BoolFilterSchema),z.boolean() ]).optional(), + allowSpecials: z.union([ z.lazy(() => BoolFilterSchema),z.boolean() ]).optional(), + allowChat: z.union([ z.lazy(() => BoolFilterSchema),z.boolean() ]).optional(), + allowMarkDraw: z.union([ z.lazy(() => BoolFilterSchema),z.boolean() ]).optional(), + gamePin: z.union([ z.lazy(() => GamepinRelationFilterSchema),z.lazy(() => GamepinWhereInputSchema) ]).optional().nullable(), + users: z.lazy(() => User_GameListRelationFilterSchema).optional() +}).strict(); + +export const GameOrderByWithRelationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional(), + state: z.lazy(() => SortOrderSchema).optional(), + allowSpectators: z.lazy(() => SortOrderSchema).optional(), + allowSpecials: z.lazy(() => SortOrderSchema).optional(), + allowChat: z.lazy(() => SortOrderSchema).optional(), + allowMarkDraw: z.lazy(() => SortOrderSchema).optional(), + gamePin: z.lazy(() => GamepinOrderByWithRelationInputSchema).optional(), + users: z.lazy(() => User_GameOrderByRelationAggregateInputSchema).optional() +}).strict(); + +export const GameWhereUniqueInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional() +}).strict(); + +export const GameOrderByWithAggregationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional(), + state: z.lazy(() => SortOrderSchema).optional(), + allowSpectators: z.lazy(() => SortOrderSchema).optional(), + allowSpecials: z.lazy(() => SortOrderSchema).optional(), + allowChat: z.lazy(() => SortOrderSchema).optional(), + allowMarkDraw: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => GameCountOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => GameMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => GameMinOrderByAggregateInputSchema).optional() +}).strict(); + +export const GameScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => GameScalarWhereWithAggregatesInputSchema),z.lazy(() => GameScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => GameScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => GameScalarWhereWithAggregatesInputSchema),z.lazy(() => GameScalarWhereWithAggregatesInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), + updatedAt: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), + state: z.union([ z.lazy(() => EnumGameStateWithAggregatesFilterSchema),z.lazy(() => GameStateSchema) ]).optional(), + allowSpectators: z.union([ z.lazy(() => BoolWithAggregatesFilterSchema),z.boolean() ]).optional(), + allowSpecials: z.union([ z.lazy(() => BoolWithAggregatesFilterSchema),z.boolean() ]).optional(), + allowChat: z.union([ z.lazy(() => BoolWithAggregatesFilterSchema),z.boolean() ]).optional(), + allowMarkDraw: z.union([ z.lazy(() => BoolWithAggregatesFilterSchema),z.boolean() ]).optional(), +}).strict(); + +export const GamepinWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => GamepinWhereInputSchema),z.lazy(() => GamepinWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => GamepinWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => GamepinWhereInputSchema),z.lazy(() => GamepinWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + pin: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + gameId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + game: z.union([ z.lazy(() => GameRelationFilterSchema),z.lazy(() => GameWhereInputSchema) ]).optional(), +}).strict(); + +export const GamepinOrderByWithRelationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + pin: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional(), + game: z.lazy(() => GameOrderByWithRelationInputSchema).optional() +}).strict(); + +export const GamepinWhereUniqueInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + pin: z.string().optional(), + gameId: z.string().optional() +}).strict(); + +export const GamepinOrderByWithAggregationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + pin: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => GamepinCountOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => GamepinMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => GamepinMinOrderByAggregateInputSchema).optional() +}).strict(); + +export const GamepinScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => GamepinScalarWhereWithAggregatesInputSchema),z.lazy(() => GamepinScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => GamepinScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => GamepinScalarWhereWithAggregatesInputSchema),z.lazy(() => GamepinScalarWhereWithAggregatesInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), + pin: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + gameId: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), +}).strict(); + +export const User_GameWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => User_GameWhereInputSchema),z.lazy(() => User_GameWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => User_GameWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => User_GameWhereInputSchema),z.lazy(() => User_GameWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + gameId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + index: z.union([ z.lazy(() => IntFilterSchema),z.number() ]).optional(), + moves: z.lazy(() => MoveListRelationFilterSchema).optional(), + chats: z.lazy(() => ChatListRelationFilterSchema).optional(), + game: z.union([ z.lazy(() => GameRelationFilterSchema),z.lazy(() => GameWhereInputSchema) ]).optional(), + user: z.union([ z.lazy(() => UserRelationFilterSchema),z.lazy(() => UserWhereInputSchema) ]).optional(), +}).strict(); + +export const User_GameOrderByWithRelationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional(), + moves: z.lazy(() => MoveOrderByRelationAggregateInputSchema).optional(), + chats: z.lazy(() => ChatOrderByRelationAggregateInputSchema).optional(), + game: z.lazy(() => GameOrderByWithRelationInputSchema).optional(), + user: z.lazy(() => UserOrderByWithRelationInputSchema).optional() +}).strict(); + +export const User_GameWhereUniqueInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + gameId_index: z.lazy(() => User_GameGameIdIndexCompoundUniqueInputSchema).optional(), + gameId_userId: z.lazy(() => User_GameGameIdUserIdCompoundUniqueInputSchema).optional() +}).strict(); + +export const User_GameOrderByWithAggregationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => User_GameCountOrderByAggregateInputSchema).optional(), + _avg: z.lazy(() => User_GameAvgOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => User_GameMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => User_GameMinOrderByAggregateInputSchema).optional(), + _sum: z.lazy(() => User_GameSumOrderByAggregateInputSchema).optional() +}).strict(); + +export const User_GameScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => User_GameScalarWhereWithAggregatesInputSchema),z.lazy(() => User_GameScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => User_GameScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => User_GameScalarWhereWithAggregatesInputSchema),z.lazy(() => User_GameScalarWhereWithAggregatesInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), + gameId: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + index: z.union([ z.lazy(() => IntWithAggregatesFilterSchema),z.number() ]).optional(), +}).strict(); + +export const MoveWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => MoveWhereInputSchema),z.lazy(() => MoveWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => MoveWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => MoveWhereInputSchema),z.lazy(() => MoveWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + index: z.union([ z.lazy(() => IntFilterSchema),z.number() ]).optional(), + user_game_id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + user_game: z.union([ z.lazy(() => User_GameRelationFilterSchema),z.lazy(() => User_GameWhereInputSchema) ]).optional(), +}).strict(); + +export const MoveOrderByWithRelationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional(), + user_game: z.lazy(() => User_GameOrderByWithRelationInputSchema).optional() +}).strict(); + +export const MoveWhereUniqueInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + user_game_id_index: z.lazy(() => MoveUser_game_idIndexCompoundUniqueInputSchema).optional() +}).strict(); + +export const MoveOrderByWithAggregationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => MoveCountOrderByAggregateInputSchema).optional(), + _avg: z.lazy(() => MoveAvgOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => MoveMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => MoveMinOrderByAggregateInputSchema).optional(), + _sum: z.lazy(() => MoveSumOrderByAggregateInputSchema).optional() +}).strict(); + +export const MoveScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => MoveScalarWhereWithAggregatesInputSchema),z.lazy(() => MoveScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => MoveScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => MoveScalarWhereWithAggregatesInputSchema),z.lazy(() => MoveScalarWhereWithAggregatesInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), + index: z.union([ z.lazy(() => IntWithAggregatesFilterSchema),z.number() ]).optional(), + user_game_id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), +}).strict(); + +export const ChatWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => ChatWhereInputSchema),z.lazy(() => ChatWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => ChatWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => ChatWhereInputSchema),z.lazy(() => ChatWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + message: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + event: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + user_game_id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + user_game: z.union([ z.lazy(() => User_GameRelationFilterSchema),z.lazy(() => User_GameWhereInputSchema) ]).optional(), +}).strict(); + +export const ChatOrderByWithRelationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + message: z.lazy(() => SortOrderSchema).optional(), + event: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional(), + user_game: z.lazy(() => User_GameOrderByWithRelationInputSchema).optional() +}).strict(); + +export const ChatWhereUniqueInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional() +}).strict(); + +export const ChatOrderByWithAggregationInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + message: z.lazy(() => SortOrderSchema).optional(), + event: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional(), + _count: z.lazy(() => ChatCountOrderByAggregateInputSchema).optional(), + _max: z.lazy(() => ChatMaxOrderByAggregateInputSchema).optional(), + _min: z.lazy(() => ChatMinOrderByAggregateInputSchema).optional() +}).strict(); + +export const ChatScalarWhereWithAggregatesInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => ChatScalarWhereWithAggregatesInputSchema),z.lazy(() => ChatScalarWhereWithAggregatesInputSchema).array() ]).optional(), + OR: z.lazy(() => ChatScalarWhereWithAggregatesInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => ChatScalarWhereWithAggregatesInputSchema),z.lazy(() => ChatScalarWhereWithAggregatesInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeWithAggregatesFilterSchema),z.coerce.date() ]).optional(), + message: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + event: z.union([ z.lazy(() => StringNullableWithAggregatesFilterSchema),z.string() ]).optional().nullable(), + user_game_id: z.union([ z.lazy(() => StringWithAggregatesFilterSchema),z.string() ]).optional(), +}).strict(); + +export const AccountCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + type: z.string(), + provider: z.string(), + providerAccountId: z.string(), + refresh_token: z.string().optional().nullable(), + access_token: z.string().optional().nullable(), + expires_at: z.number().int().optional().nullable(), + ext_expires_in: z.number().int().optional().nullable(), + token_type: z.string().optional().nullable(), + scope: z.string().optional().nullable(), + id_token: z.string().optional().nullable(), + session_state: z.string().optional().nullable(), + oauth_token_secret: z.string().optional().nullable(), + oauth_token: z.string().optional().nullable(), + user: z.lazy(() => UserCreateNestedOneWithoutAccountsInputSchema) +}).strict(); + +export const AccountUncheckedCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + userId: z.string(), + type: z.string(), + provider: z.string(), + providerAccountId: z.string(), + refresh_token: z.string().optional().nullable(), + access_token: z.string().optional().nullable(), + expires_at: z.number().int().optional().nullable(), + ext_expires_in: z.number().int().optional().nullable(), + token_type: z.string().optional().nullable(), + scope: z.string().optional().nullable(), + id_token: z.string().optional().nullable(), + session_state: z.string().optional().nullable(), + oauth_token_secret: z.string().optional().nullable(), + oauth_token: z.string().optional().nullable() +}).strict(); + +export const AccountUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + type: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + provider: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + providerAccountId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + refresh_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + access_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + expires_at: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + ext_expires_in: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + token_type: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + scope: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + id_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + session_state: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token_secret: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + user: z.lazy(() => UserUpdateOneRequiredWithoutAccountsNestedInputSchema).optional() +}).strict(); + +export const AccountUncheckedUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + type: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + provider: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + providerAccountId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + refresh_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + access_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + expires_at: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + ext_expires_in: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + token_type: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + scope: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + id_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + session_state: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token_secret: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const AccountCreateManyInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + userId: z.string(), + type: z.string(), + provider: z.string(), + providerAccountId: z.string(), + refresh_token: z.string().optional().nullable(), + access_token: z.string().optional().nullable(), + expires_at: z.number().int().optional().nullable(), + ext_expires_in: z.number().int().optional().nullable(), + token_type: z.string().optional().nullable(), + scope: z.string().optional().nullable(), + id_token: z.string().optional().nullable(), + session_state: z.string().optional().nullable(), + oauth_token_secret: z.string().optional().nullable(), + oauth_token: z.string().optional().nullable() +}).strict(); + +export const AccountUpdateManyMutationInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + type: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + provider: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + providerAccountId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + refresh_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + access_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + expires_at: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + ext_expires_in: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + token_type: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + scope: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + id_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + session_state: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token_secret: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const AccountUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + type: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + provider: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + providerAccountId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + refresh_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + access_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + expires_at: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + ext_expires_in: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + token_type: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + scope: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + id_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + session_state: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token_secret: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const SessionCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + sessionToken: z.string(), + expires: z.coerce.date(), + user: z.lazy(() => UserCreateNestedOneWithoutSessionsInputSchema) +}).strict(); + +export const SessionUncheckedCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + sessionToken: z.string(), + userId: z.string(), + expires: z.coerce.date() +}).strict(); + +export const SessionUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + sessionToken: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + user: z.lazy(() => UserUpdateOneRequiredWithoutSessionsNestedInputSchema).optional() +}).strict(); + +export const SessionUncheckedUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + sessionToken: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const SessionCreateManyInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + sessionToken: z.string(), + userId: z.string(), + expires: z.coerce.date() +}).strict(); + +export const SessionUpdateManyMutationInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + sessionToken: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const SessionUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + sessionToken: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const UserCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + games: z.lazy(() => User_GameCreateNestedManyWithoutUserInputSchema).optional(), + accounts: z.lazy(() => AccountCreateNestedManyWithoutUserInputSchema).optional(), + sessions: z.lazy(() => SessionCreateNestedManyWithoutUserInputSchema).optional() +}).strict(); + +export const UserUncheckedCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + games: z.lazy(() => User_GameUncheckedCreateNestedManyWithoutUserInputSchema).optional(), + accounts: z.lazy(() => AccountUncheckedCreateNestedManyWithoutUserInputSchema).optional(), + sessions: z.lazy(() => SessionUncheckedCreateNestedManyWithoutUserInputSchema).optional() +}).strict(); + +export const UserUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + games: z.lazy(() => User_GameUpdateManyWithoutUserNestedInputSchema).optional(), + accounts: z.lazy(() => AccountUpdateManyWithoutUserNestedInputSchema).optional(), + sessions: z.lazy(() => SessionUpdateManyWithoutUserNestedInputSchema).optional() +}).strict(); + +export const UserUncheckedUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + games: z.lazy(() => User_GameUncheckedUpdateManyWithoutUserNestedInputSchema).optional(), + accounts: z.lazy(() => AccountUncheckedUpdateManyWithoutUserNestedInputSchema).optional(), + sessions: z.lazy(() => SessionUncheckedUpdateManyWithoutUserNestedInputSchema).optional() +}).strict(); + +export const UserCreateManyInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional() +}).strict(); + +export const UserUpdateManyMutationInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const UserUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const VerificationTokenCreateInputSchema: z.ZodType = z.object({ + identifier: z.string(), + token: z.string(), + expires: z.coerce.date() +}).strict(); + +export const VerificationTokenUncheckedCreateInputSchema: z.ZodType = z.object({ + identifier: z.string(), + token: z.string(), + expires: z.coerce.date() +}).strict(); + +export const VerificationTokenUpdateInputSchema: z.ZodType = z.object({ + identifier: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + token: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const VerificationTokenUncheckedUpdateInputSchema: z.ZodType = z.object({ + identifier: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + token: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const VerificationTokenCreateManyInputSchema: z.ZodType = z.object({ + identifier: z.string(), + token: z.string(), + expires: z.coerce.date() +}).strict(); + +export const VerificationTokenUpdateManyMutationInputSchema: z.ZodType = z.object({ + identifier: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + token: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const VerificationTokenUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + identifier: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + token: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const GameCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + state: z.lazy(() => GameStateSchema).optional(), + allowSpectators: z.boolean().optional(), + allowSpecials: z.boolean().optional(), + allowChat: z.boolean().optional(), + allowMarkDraw: z.boolean().optional(), + gamePin: z.lazy(() => GamepinCreateNestedOneWithoutGameInputSchema).optional(), + users: z.lazy(() => User_GameCreateNestedManyWithoutGameInputSchema).optional() +}).strict(); + +export const GameUncheckedCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + state: z.lazy(() => GameStateSchema).optional(), + allowSpectators: z.boolean().optional(), + allowSpecials: z.boolean().optional(), + allowChat: z.boolean().optional(), + allowMarkDraw: z.boolean().optional(), + gamePin: z.lazy(() => GamepinUncheckedCreateNestedOneWithoutGameInputSchema).optional(), + users: z.lazy(() => User_GameUncheckedCreateNestedManyWithoutGameInputSchema).optional() +}).strict(); + +export const GameUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + state: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => EnumGameStateFieldUpdateOperationsInputSchema) ]).optional(), + allowSpectators: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowSpecials: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowChat: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowMarkDraw: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + gamePin: z.lazy(() => GamepinUpdateOneWithoutGameNestedInputSchema).optional(), + users: z.lazy(() => User_GameUpdateManyWithoutGameNestedInputSchema).optional() +}).strict(); + +export const GameUncheckedUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + state: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => EnumGameStateFieldUpdateOperationsInputSchema) ]).optional(), + allowSpectators: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowSpecials: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowChat: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowMarkDraw: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + gamePin: z.lazy(() => GamepinUncheckedUpdateOneWithoutGameNestedInputSchema).optional(), + users: z.lazy(() => User_GameUncheckedUpdateManyWithoutGameNestedInputSchema).optional() +}).strict(); + +export const GameCreateManyInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + state: z.lazy(() => GameStateSchema).optional(), + allowSpectators: z.boolean().optional(), + allowSpecials: z.boolean().optional(), + allowChat: z.boolean().optional(), + allowMarkDraw: z.boolean().optional() +}).strict(); + +export const GameUpdateManyMutationInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + state: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => EnumGameStateFieldUpdateOperationsInputSchema) ]).optional(), + allowSpectators: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowSpecials: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowChat: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowMarkDraw: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const GameUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + state: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => EnumGameStateFieldUpdateOperationsInputSchema) ]).optional(), + allowSpectators: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowSpecials: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowChat: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowMarkDraw: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const GamepinCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + pin: z.string(), + game: z.lazy(() => GameCreateNestedOneWithoutGamePinInputSchema) +}).strict(); + +export const GamepinUncheckedCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + pin: z.string(), + gameId: z.string() +}).strict(); + +export const GamepinUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + pin: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + game: z.lazy(() => GameUpdateOneRequiredWithoutGamePinNestedInputSchema).optional() +}).strict(); + +export const GamepinUncheckedUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + pin: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + gameId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const GamepinCreateManyInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + pin: z.string(), + gameId: z.string() +}).strict(); + +export const GamepinUpdateManyMutationInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + pin: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const GamepinUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + pin: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + gameId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const User_GameCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int(), + moves: z.lazy(() => MoveCreateNestedManyWithoutUser_gameInputSchema).optional(), + chats: z.lazy(() => ChatCreateNestedManyWithoutUser_gameInputSchema).optional(), + game: z.lazy(() => GameCreateNestedOneWithoutUsersInputSchema), + user: z.lazy(() => UserCreateNestedOneWithoutGamesInputSchema) +}).strict(); + +export const User_GameUncheckedCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + gameId: z.string(), + userId: z.string(), + index: z.number().int(), + moves: z.lazy(() => MoveUncheckedCreateNestedManyWithoutUser_gameInputSchema).optional(), + chats: z.lazy(() => ChatUncheckedCreateNestedManyWithoutUser_gameInputSchema).optional() +}).strict(); + +export const User_GameUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + moves: z.lazy(() => MoveUpdateManyWithoutUser_gameNestedInputSchema).optional(), + chats: z.lazy(() => ChatUpdateManyWithoutUser_gameNestedInputSchema).optional(), + game: z.lazy(() => GameUpdateOneRequiredWithoutUsersNestedInputSchema).optional(), + user: z.lazy(() => UserUpdateOneRequiredWithoutGamesNestedInputSchema).optional() +}).strict(); + +export const User_GameUncheckedUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + gameId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + moves: z.lazy(() => MoveUncheckedUpdateManyWithoutUser_gameNestedInputSchema).optional(), + chats: z.lazy(() => ChatUncheckedUpdateManyWithoutUser_gameNestedInputSchema).optional() +}).strict(); + +export const User_GameCreateManyInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + gameId: z.string(), + userId: z.string(), + index: z.number().int() +}).strict(); + +export const User_GameUpdateManyMutationInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const User_GameUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + gameId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const MoveCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int(), + user_game: z.lazy(() => User_GameCreateNestedOneWithoutMovesInputSchema) +}).strict(); + +export const MoveUncheckedCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int(), + user_game_id: z.string() +}).strict(); + +export const MoveUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + user_game: z.lazy(() => User_GameUpdateOneRequiredWithoutMovesNestedInputSchema).optional() +}).strict(); + +export const MoveUncheckedUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + user_game_id: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const MoveCreateManyInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int(), + user_game_id: z.string() +}).strict(); + +export const MoveUpdateManyMutationInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const MoveUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + user_game_id: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const ChatCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + message: z.string().optional().nullable(), + event: z.string().optional().nullable(), + user_game: z.lazy(() => User_GameCreateNestedOneWithoutChatsInputSchema) +}).strict(); + +export const ChatUncheckedCreateInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + message: z.string().optional().nullable(), + event: z.string().optional().nullable(), + user_game_id: z.string() +}).strict(); + +export const ChatUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + message: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + event: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + user_game: z.lazy(() => User_GameUpdateOneRequiredWithoutChatsNestedInputSchema).optional() +}).strict(); + +export const ChatUncheckedUpdateInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + message: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + event: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + user_game_id: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const ChatCreateManyInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + message: z.string().optional().nullable(), + event: z.string().optional().nullable(), + user_game_id: z.string() +}).strict(); + +export const ChatUpdateManyMutationInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + message: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + event: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const ChatUncheckedUpdateManyInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + message: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + event: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + user_game_id: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const StringFilterSchema: z.ZodType = z.object({ + equals: z.string().optional(), + in: z.union([ z.string().array(),z.string() ]).optional(), + notIn: z.union([ z.string().array(),z.string() ]).optional(), + lt: z.string().optional(), + lte: z.string().optional(), + gt: z.string().optional(), + gte: z.string().optional(), + contains: z.string().optional(), + startsWith: z.string().optional(), + endsWith: z.string().optional(), + not: z.union([ z.string(),z.lazy(() => NestedStringFilterSchema) ]).optional(), +}).strict(); + +export const StringNullableFilterSchema: z.ZodType = z.object({ + equals: z.string().optional().nullable(), + in: z.union([ z.string().array(),z.string() ]).optional().nullable(), + notIn: z.union([ z.string().array(),z.string() ]).optional().nullable(), + lt: z.string().optional(), + lte: z.string().optional(), + gt: z.string().optional(), + gte: z.string().optional(), + contains: z.string().optional(), + startsWith: z.string().optional(), + endsWith: z.string().optional(), + not: z.union([ z.string(),z.lazy(() => NestedStringNullableFilterSchema) ]).optional().nullable(), +}).strict(); + +export const IntNullableFilterSchema: z.ZodType = z.object({ + equals: z.number().optional().nullable(), + in: z.union([ z.number().array(),z.number() ]).optional().nullable(), + notIn: z.union([ z.number().array(),z.number() ]).optional().nullable(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedIntNullableFilterSchema) ]).optional().nullable(), +}).strict(); + +export const UserRelationFilterSchema: z.ZodType = z.object({ + is: z.lazy(() => UserWhereInputSchema).optional(), + isNot: z.lazy(() => UserWhereInputSchema).optional() +}).strict(); + +export const AccountProviderProviderAccountIdCompoundUniqueInputSchema: z.ZodType = z.object({ + provider: z.string(), + providerAccountId: z.string() +}).strict(); + +export const AccountCountOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + type: z.lazy(() => SortOrderSchema).optional(), + provider: z.lazy(() => SortOrderSchema).optional(), + providerAccountId: z.lazy(() => SortOrderSchema).optional(), + refresh_token: z.lazy(() => SortOrderSchema).optional(), + access_token: z.lazy(() => SortOrderSchema).optional(), + expires_at: z.lazy(() => SortOrderSchema).optional(), + ext_expires_in: z.lazy(() => SortOrderSchema).optional(), + token_type: z.lazy(() => SortOrderSchema).optional(), + scope: z.lazy(() => SortOrderSchema).optional(), + id_token: z.lazy(() => SortOrderSchema).optional(), + session_state: z.lazy(() => SortOrderSchema).optional(), + oauth_token_secret: z.lazy(() => SortOrderSchema).optional(), + oauth_token: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const AccountAvgOrderByAggregateInputSchema: z.ZodType = z.object({ + expires_at: z.lazy(() => SortOrderSchema).optional(), + ext_expires_in: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const AccountMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + type: z.lazy(() => SortOrderSchema).optional(), + provider: z.lazy(() => SortOrderSchema).optional(), + providerAccountId: z.lazy(() => SortOrderSchema).optional(), + refresh_token: z.lazy(() => SortOrderSchema).optional(), + access_token: z.lazy(() => SortOrderSchema).optional(), + expires_at: z.lazy(() => SortOrderSchema).optional(), + ext_expires_in: z.lazy(() => SortOrderSchema).optional(), + token_type: z.lazy(() => SortOrderSchema).optional(), + scope: z.lazy(() => SortOrderSchema).optional(), + id_token: z.lazy(() => SortOrderSchema).optional(), + session_state: z.lazy(() => SortOrderSchema).optional(), + oauth_token_secret: z.lazy(() => SortOrderSchema).optional(), + oauth_token: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const AccountMinOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + type: z.lazy(() => SortOrderSchema).optional(), + provider: z.lazy(() => SortOrderSchema).optional(), + providerAccountId: z.lazy(() => SortOrderSchema).optional(), + refresh_token: z.lazy(() => SortOrderSchema).optional(), + access_token: z.lazy(() => SortOrderSchema).optional(), + expires_at: z.lazy(() => SortOrderSchema).optional(), + ext_expires_in: z.lazy(() => SortOrderSchema).optional(), + token_type: z.lazy(() => SortOrderSchema).optional(), + scope: z.lazy(() => SortOrderSchema).optional(), + id_token: z.lazy(() => SortOrderSchema).optional(), + session_state: z.lazy(() => SortOrderSchema).optional(), + oauth_token_secret: z.lazy(() => SortOrderSchema).optional(), + oauth_token: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const AccountSumOrderByAggregateInputSchema: z.ZodType = z.object({ + expires_at: z.lazy(() => SortOrderSchema).optional(), + ext_expires_in: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const StringWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.string().optional(), + in: z.union([ z.string().array(),z.string() ]).optional(), + notIn: z.union([ z.string().array(),z.string() ]).optional(), + lt: z.string().optional(), + lte: z.string().optional(), + gt: z.string().optional(), + gte: z.string().optional(), + contains: z.string().optional(), + startsWith: z.string().optional(), + endsWith: z.string().optional(), + not: z.union([ z.string(),z.lazy(() => NestedStringWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedStringFilterSchema).optional(), + _max: z.lazy(() => NestedStringFilterSchema).optional() +}).strict(); + +export const StringNullableWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.string().optional().nullable(), + in: z.union([ z.string().array(),z.string() ]).optional().nullable(), + notIn: z.union([ z.string().array(),z.string() ]).optional().nullable(), + lt: z.string().optional(), + lte: z.string().optional(), + gt: z.string().optional(), + gte: z.string().optional(), + contains: z.string().optional(), + startsWith: z.string().optional(), + endsWith: z.string().optional(), + not: z.union([ z.string(),z.lazy(() => NestedStringNullableWithAggregatesFilterSchema) ]).optional().nullable(), + _count: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _min: z.lazy(() => NestedStringNullableFilterSchema).optional(), + _max: z.lazy(() => NestedStringNullableFilterSchema).optional() +}).strict(); + +export const IntNullableWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.number().optional().nullable(), + in: z.union([ z.number().array(),z.number() ]).optional().nullable(), + notIn: z.union([ z.number().array(),z.number() ]).optional().nullable(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedIntNullableWithAggregatesFilterSchema) ]).optional().nullable(), + _count: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _avg: z.lazy(() => NestedFloatNullableFilterSchema).optional(), + _sum: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _min: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _max: z.lazy(() => NestedIntNullableFilterSchema).optional() +}).strict(); + +export const DateTimeFilterSchema: z.ZodType = z.object({ + equals: z.coerce.date().optional(), + in: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional(), + notIn: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional(), + lt: z.coerce.date().optional(), + lte: z.coerce.date().optional(), + gt: z.coerce.date().optional(), + gte: z.coerce.date().optional(), + not: z.union([ z.coerce.date(),z.lazy(() => NestedDateTimeFilterSchema) ]).optional(), +}).strict(); + +export const SessionCountOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + sessionToken: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const SessionMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + sessionToken: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const SessionMinOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + sessionToken: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const DateTimeWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.coerce.date().optional(), + in: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional(), + notIn: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional(), + lt: z.coerce.date().optional(), + lte: z.coerce.date().optional(), + gt: z.coerce.date().optional(), + gte: z.coerce.date().optional(), + not: z.union([ z.coerce.date(),z.lazy(() => NestedDateTimeWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedDateTimeFilterSchema).optional(), + _max: z.lazy(() => NestedDateTimeFilterSchema).optional() +}).strict(); + +export const DateTimeNullableFilterSchema: z.ZodType = z.object({ + equals: z.coerce.date().optional().nullable(), + in: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional().nullable(), + notIn: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional().nullable(), + lt: z.coerce.date().optional(), + lte: z.coerce.date().optional(), + gt: z.coerce.date().optional(), + gte: z.coerce.date().optional(), + not: z.union([ z.coerce.date(),z.lazy(() => NestedDateTimeNullableFilterSchema) ]).optional().nullable(), +}).strict(); + +export const User_GameListRelationFilterSchema: z.ZodType = z.object({ + every: z.lazy(() => User_GameWhereInputSchema).optional(), + some: z.lazy(() => User_GameWhereInputSchema).optional(), + none: z.lazy(() => User_GameWhereInputSchema).optional() +}).strict(); + +export const AccountListRelationFilterSchema: z.ZodType = z.object({ + every: z.lazy(() => AccountWhereInputSchema).optional(), + some: z.lazy(() => AccountWhereInputSchema).optional(), + none: z.lazy(() => AccountWhereInputSchema).optional() +}).strict(); + +export const SessionListRelationFilterSchema: z.ZodType = z.object({ + every: z.lazy(() => SessionWhereInputSchema).optional(), + some: z.lazy(() => SessionWhereInputSchema).optional(), + none: z.lazy(() => SessionWhereInputSchema).optional() +}).strict(); + +export const User_GameOrderByRelationAggregateInputSchema: z.ZodType = z.object({ + _count: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const AccountOrderByRelationAggregateInputSchema: z.ZodType = z.object({ + _count: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const SessionOrderByRelationAggregateInputSchema: z.ZodType = z.object({ + _count: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const UserCountOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + name: z.lazy(() => SortOrderSchema).optional(), + email: z.lazy(() => SortOrderSchema).optional(), + emailVerified: z.lazy(() => SortOrderSchema).optional(), + image: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const UserMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + name: z.lazy(() => SortOrderSchema).optional(), + email: z.lazy(() => SortOrderSchema).optional(), + emailVerified: z.lazy(() => SortOrderSchema).optional(), + image: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const UserMinOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + name: z.lazy(() => SortOrderSchema).optional(), + email: z.lazy(() => SortOrderSchema).optional(), + emailVerified: z.lazy(() => SortOrderSchema).optional(), + image: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const DateTimeNullableWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.coerce.date().optional().nullable(), + in: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional().nullable(), + notIn: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional().nullable(), + lt: z.coerce.date().optional(), + lte: z.coerce.date().optional(), + gt: z.coerce.date().optional(), + gte: z.coerce.date().optional(), + not: z.union([ z.coerce.date(),z.lazy(() => NestedDateTimeNullableWithAggregatesFilterSchema) ]).optional().nullable(), + _count: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _min: z.lazy(() => NestedDateTimeNullableFilterSchema).optional(), + _max: z.lazy(() => NestedDateTimeNullableFilterSchema).optional() +}).strict(); + +export const VerificationTokenIdentifierTokenCompoundUniqueInputSchema: z.ZodType = z.object({ + identifier: z.string(), + token: z.string() +}).strict(); + +export const VerificationTokenCountOrderByAggregateInputSchema: z.ZodType = z.object({ + identifier: z.lazy(() => SortOrderSchema).optional(), + token: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const VerificationTokenMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + identifier: z.lazy(() => SortOrderSchema).optional(), + token: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const VerificationTokenMinOrderByAggregateInputSchema: z.ZodType = z.object({ + identifier: z.lazy(() => SortOrderSchema).optional(), + token: z.lazy(() => SortOrderSchema).optional(), + expires: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const EnumGameStateFilterSchema: z.ZodType = z.object({ + equals: z.lazy(() => GameStateSchema).optional(), + in: z.union([ z.lazy(() => GameStateSchema).array(),z.lazy(() => GameStateSchema) ]).optional(), + notIn: z.union([ z.lazy(() => GameStateSchema).array(),z.lazy(() => GameStateSchema) ]).optional(), + not: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => NestedEnumGameStateFilterSchema) ]).optional(), +}).strict(); + +export const BoolFilterSchema: z.ZodType = z.object({ + equals: z.boolean().optional(), + not: z.union([ z.boolean(),z.lazy(() => NestedBoolFilterSchema) ]).optional(), +}).strict(); + +export const GamepinRelationFilterSchema: z.ZodType = z.object({ + is: z.lazy(() => GamepinWhereInputSchema).optional().nullable(), + isNot: z.lazy(() => GamepinWhereInputSchema).optional().nullable() +}).strict(); + +export const GameCountOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional(), + state: z.lazy(() => SortOrderSchema).optional(), + allowSpectators: z.lazy(() => SortOrderSchema).optional(), + allowSpecials: z.lazy(() => SortOrderSchema).optional(), + allowChat: z.lazy(() => SortOrderSchema).optional(), + allowMarkDraw: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const GameMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional(), + state: z.lazy(() => SortOrderSchema).optional(), + allowSpectators: z.lazy(() => SortOrderSchema).optional(), + allowSpecials: z.lazy(() => SortOrderSchema).optional(), + allowChat: z.lazy(() => SortOrderSchema).optional(), + allowMarkDraw: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const GameMinOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + updatedAt: z.lazy(() => SortOrderSchema).optional(), + state: z.lazy(() => SortOrderSchema).optional(), + allowSpectators: z.lazy(() => SortOrderSchema).optional(), + allowSpecials: z.lazy(() => SortOrderSchema).optional(), + allowChat: z.lazy(() => SortOrderSchema).optional(), + allowMarkDraw: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const EnumGameStateWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.lazy(() => GameStateSchema).optional(), + in: z.union([ z.lazy(() => GameStateSchema).array(),z.lazy(() => GameStateSchema) ]).optional(), + notIn: z.union([ z.lazy(() => GameStateSchema).array(),z.lazy(() => GameStateSchema) ]).optional(), + not: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => NestedEnumGameStateWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedEnumGameStateFilterSchema).optional(), + _max: z.lazy(() => NestedEnumGameStateFilterSchema).optional() +}).strict(); + +export const BoolWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.boolean().optional(), + not: z.union([ z.boolean(),z.lazy(() => NestedBoolWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedBoolFilterSchema).optional(), + _max: z.lazy(() => NestedBoolFilterSchema).optional() +}).strict(); + +export const GameRelationFilterSchema: z.ZodType = z.object({ + is: z.lazy(() => GameWhereInputSchema).optional(), + isNot: z.lazy(() => GameWhereInputSchema).optional() +}).strict(); + +export const GamepinCountOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + pin: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const GamepinMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + pin: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const GamepinMinOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + pin: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const IntFilterSchema: z.ZodType = z.object({ + equals: z.number().optional(), + in: z.union([ z.number().array(),z.number() ]).optional(), + notIn: z.union([ z.number().array(),z.number() ]).optional(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedIntFilterSchema) ]).optional(), +}).strict(); + +export const MoveListRelationFilterSchema: z.ZodType = z.object({ + every: z.lazy(() => MoveWhereInputSchema).optional(), + some: z.lazy(() => MoveWhereInputSchema).optional(), + none: z.lazy(() => MoveWhereInputSchema).optional() +}).strict(); + +export const ChatListRelationFilterSchema: z.ZodType = z.object({ + every: z.lazy(() => ChatWhereInputSchema).optional(), + some: z.lazy(() => ChatWhereInputSchema).optional(), + none: z.lazy(() => ChatWhereInputSchema).optional() +}).strict(); + +export const MoveOrderByRelationAggregateInputSchema: z.ZodType = z.object({ + _count: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const ChatOrderByRelationAggregateInputSchema: z.ZodType = z.object({ + _count: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const User_GameGameIdIndexCompoundUniqueInputSchema: z.ZodType = z.object({ + gameId: z.string(), + index: z.number() +}).strict(); + +export const User_GameGameIdUserIdCompoundUniqueInputSchema: z.ZodType = z.object({ + gameId: z.string(), + userId: z.string() +}).strict(); + +export const User_GameCountOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const User_GameAvgOrderByAggregateInputSchema: z.ZodType = z.object({ + index: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const User_GameMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const User_GameMinOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + gameId: z.lazy(() => SortOrderSchema).optional(), + userId: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const User_GameSumOrderByAggregateInputSchema: z.ZodType = z.object({ + index: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const IntWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.number().optional(), + in: z.union([ z.number().array(),z.number() ]).optional(), + notIn: z.union([ z.number().array(),z.number() ]).optional(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedIntWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _avg: z.lazy(() => NestedFloatFilterSchema).optional(), + _sum: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedIntFilterSchema).optional(), + _max: z.lazy(() => NestedIntFilterSchema).optional() +}).strict(); + +export const User_GameRelationFilterSchema: z.ZodType = z.object({ + is: z.lazy(() => User_GameWhereInputSchema).optional(), + isNot: z.lazy(() => User_GameWhereInputSchema).optional() +}).strict(); + +export const MoveUser_game_idIndexCompoundUniqueInputSchema: z.ZodType = z.object({ + user_game_id: z.string(), + index: z.number() +}).strict(); + +export const MoveCountOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const MoveAvgOrderByAggregateInputSchema: z.ZodType = z.object({ + index: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const MoveMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const MoveMinOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + index: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const MoveSumOrderByAggregateInputSchema: z.ZodType = z.object({ + index: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const ChatCountOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + message: z.lazy(() => SortOrderSchema).optional(), + event: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const ChatMaxOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + message: z.lazy(() => SortOrderSchema).optional(), + event: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const ChatMinOrderByAggregateInputSchema: z.ZodType = z.object({ + id: z.lazy(() => SortOrderSchema).optional(), + createdAt: z.lazy(() => SortOrderSchema).optional(), + message: z.lazy(() => SortOrderSchema).optional(), + event: z.lazy(() => SortOrderSchema).optional(), + user_game_id: z.lazy(() => SortOrderSchema).optional() +}).strict(); + +export const UserCreateNestedOneWithoutAccountsInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => UserCreateWithoutAccountsInputSchema),z.lazy(() => UserUncheckedCreateWithoutAccountsInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => UserCreateOrConnectWithoutAccountsInputSchema).optional(), + connect: z.lazy(() => UserWhereUniqueInputSchema).optional() +}).strict(); + +export const StringFieldUpdateOperationsInputSchema: z.ZodType = z.object({ + set: z.string().optional() +}).strict(); + +export const NullableStringFieldUpdateOperationsInputSchema: z.ZodType = z.object({ + set: z.string().optional().nullable() +}).strict(); + +export const NullableIntFieldUpdateOperationsInputSchema: z.ZodType = z.object({ + set: z.number().optional().nullable(), + increment: z.number().optional(), + decrement: z.number().optional(), + multiply: z.number().optional(), + divide: z.number().optional() +}).strict(); + +export const UserUpdateOneRequiredWithoutAccountsNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => UserCreateWithoutAccountsInputSchema),z.lazy(() => UserUncheckedCreateWithoutAccountsInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => UserCreateOrConnectWithoutAccountsInputSchema).optional(), + upsert: z.lazy(() => UserUpsertWithoutAccountsInputSchema).optional(), + connect: z.lazy(() => UserWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => UserUpdateWithoutAccountsInputSchema),z.lazy(() => UserUncheckedUpdateWithoutAccountsInputSchema) ]).optional(), +}).strict(); + +export const UserCreateNestedOneWithoutSessionsInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => UserCreateWithoutSessionsInputSchema),z.lazy(() => UserUncheckedCreateWithoutSessionsInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => UserCreateOrConnectWithoutSessionsInputSchema).optional(), + connect: z.lazy(() => UserWhereUniqueInputSchema).optional() +}).strict(); + +export const DateTimeFieldUpdateOperationsInputSchema: z.ZodType = z.object({ + set: z.coerce.date().optional() +}).strict(); + +export const UserUpdateOneRequiredWithoutSessionsNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => UserCreateWithoutSessionsInputSchema),z.lazy(() => UserUncheckedCreateWithoutSessionsInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => UserCreateOrConnectWithoutSessionsInputSchema).optional(), + upsert: z.lazy(() => UserUpsertWithoutSessionsInputSchema).optional(), + connect: z.lazy(() => UserWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => UserUpdateWithoutSessionsInputSchema),z.lazy(() => UserUncheckedUpdateWithoutSessionsInputSchema) ]).optional(), +}).strict(); + +export const User_GameCreateNestedManyWithoutUserInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutUserInputSchema),z.lazy(() => User_GameCreateWithoutUserInputSchema).array(),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => User_GameCreateOrConnectWithoutUserInputSchema),z.lazy(() => User_GameCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => User_GameCreateManyUserInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const AccountCreateNestedManyWithoutUserInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => AccountCreateWithoutUserInputSchema),z.lazy(() => AccountCreateWithoutUserInputSchema).array(),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => AccountCreateOrConnectWithoutUserInputSchema),z.lazy(() => AccountCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => AccountCreateManyUserInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const SessionCreateNestedManyWithoutUserInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => SessionCreateWithoutUserInputSchema),z.lazy(() => SessionCreateWithoutUserInputSchema).array(),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => SessionCreateOrConnectWithoutUserInputSchema),z.lazy(() => SessionCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => SessionCreateManyUserInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const User_GameUncheckedCreateNestedManyWithoutUserInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutUserInputSchema),z.lazy(() => User_GameCreateWithoutUserInputSchema).array(),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => User_GameCreateOrConnectWithoutUserInputSchema),z.lazy(() => User_GameCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => User_GameCreateManyUserInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const AccountUncheckedCreateNestedManyWithoutUserInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => AccountCreateWithoutUserInputSchema),z.lazy(() => AccountCreateWithoutUserInputSchema).array(),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => AccountCreateOrConnectWithoutUserInputSchema),z.lazy(() => AccountCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => AccountCreateManyUserInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const SessionUncheckedCreateNestedManyWithoutUserInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => SessionCreateWithoutUserInputSchema),z.lazy(() => SessionCreateWithoutUserInputSchema).array(),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => SessionCreateOrConnectWithoutUserInputSchema),z.lazy(() => SessionCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => SessionCreateManyUserInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const NullableDateTimeFieldUpdateOperationsInputSchema: z.ZodType = z.object({ + set: z.coerce.date().optional().nullable() +}).strict(); + +export const User_GameUpdateManyWithoutUserNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutUserInputSchema),z.lazy(() => User_GameCreateWithoutUserInputSchema).array(),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => User_GameCreateOrConnectWithoutUserInputSchema),z.lazy(() => User_GameCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => User_GameUpsertWithWhereUniqueWithoutUserInputSchema),z.lazy(() => User_GameUpsertWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => User_GameCreateManyUserInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => User_GameUpdateWithWhereUniqueWithoutUserInputSchema),z.lazy(() => User_GameUpdateWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => User_GameUpdateManyWithWhereWithoutUserInputSchema),z.lazy(() => User_GameUpdateManyWithWhereWithoutUserInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => User_GameScalarWhereInputSchema),z.lazy(() => User_GameScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const AccountUpdateManyWithoutUserNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => AccountCreateWithoutUserInputSchema),z.lazy(() => AccountCreateWithoutUserInputSchema).array(),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => AccountCreateOrConnectWithoutUserInputSchema),z.lazy(() => AccountCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => AccountUpsertWithWhereUniqueWithoutUserInputSchema),z.lazy(() => AccountUpsertWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => AccountCreateManyUserInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => AccountUpdateWithWhereUniqueWithoutUserInputSchema),z.lazy(() => AccountUpdateWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => AccountUpdateManyWithWhereWithoutUserInputSchema),z.lazy(() => AccountUpdateManyWithWhereWithoutUserInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => AccountScalarWhereInputSchema),z.lazy(() => AccountScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const SessionUpdateManyWithoutUserNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => SessionCreateWithoutUserInputSchema),z.lazy(() => SessionCreateWithoutUserInputSchema).array(),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => SessionCreateOrConnectWithoutUserInputSchema),z.lazy(() => SessionCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => SessionUpsertWithWhereUniqueWithoutUserInputSchema),z.lazy(() => SessionUpsertWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => SessionCreateManyUserInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => SessionUpdateWithWhereUniqueWithoutUserInputSchema),z.lazy(() => SessionUpdateWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => SessionUpdateManyWithWhereWithoutUserInputSchema),z.lazy(() => SessionUpdateManyWithWhereWithoutUserInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => SessionScalarWhereInputSchema),z.lazy(() => SessionScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const User_GameUncheckedUpdateManyWithoutUserNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutUserInputSchema),z.lazy(() => User_GameCreateWithoutUserInputSchema).array(),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => User_GameCreateOrConnectWithoutUserInputSchema),z.lazy(() => User_GameCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => User_GameUpsertWithWhereUniqueWithoutUserInputSchema),z.lazy(() => User_GameUpsertWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => User_GameCreateManyUserInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => User_GameUpdateWithWhereUniqueWithoutUserInputSchema),z.lazy(() => User_GameUpdateWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => User_GameUpdateManyWithWhereWithoutUserInputSchema),z.lazy(() => User_GameUpdateManyWithWhereWithoutUserInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => User_GameScalarWhereInputSchema),z.lazy(() => User_GameScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const AccountUncheckedUpdateManyWithoutUserNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => AccountCreateWithoutUserInputSchema),z.lazy(() => AccountCreateWithoutUserInputSchema).array(),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => AccountCreateOrConnectWithoutUserInputSchema),z.lazy(() => AccountCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => AccountUpsertWithWhereUniqueWithoutUserInputSchema),z.lazy(() => AccountUpsertWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => AccountCreateManyUserInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => AccountWhereUniqueInputSchema),z.lazy(() => AccountWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => AccountUpdateWithWhereUniqueWithoutUserInputSchema),z.lazy(() => AccountUpdateWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => AccountUpdateManyWithWhereWithoutUserInputSchema),z.lazy(() => AccountUpdateManyWithWhereWithoutUserInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => AccountScalarWhereInputSchema),z.lazy(() => AccountScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const SessionUncheckedUpdateManyWithoutUserNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => SessionCreateWithoutUserInputSchema),z.lazy(() => SessionCreateWithoutUserInputSchema).array(),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => SessionCreateOrConnectWithoutUserInputSchema),z.lazy(() => SessionCreateOrConnectWithoutUserInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => SessionUpsertWithWhereUniqueWithoutUserInputSchema),z.lazy(() => SessionUpsertWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + createMany: z.lazy(() => SessionCreateManyUserInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => SessionWhereUniqueInputSchema),z.lazy(() => SessionWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => SessionUpdateWithWhereUniqueWithoutUserInputSchema),z.lazy(() => SessionUpdateWithWhereUniqueWithoutUserInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => SessionUpdateManyWithWhereWithoutUserInputSchema),z.lazy(() => SessionUpdateManyWithWhereWithoutUserInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => SessionScalarWhereInputSchema),z.lazy(() => SessionScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const GamepinCreateNestedOneWithoutGameInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => GamepinCreateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedCreateWithoutGameInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => GamepinCreateOrConnectWithoutGameInputSchema).optional(), + connect: z.lazy(() => GamepinWhereUniqueInputSchema).optional() +}).strict(); + +export const User_GameCreateNestedManyWithoutGameInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutGameInputSchema),z.lazy(() => User_GameCreateWithoutGameInputSchema).array(),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => User_GameCreateOrConnectWithoutGameInputSchema),z.lazy(() => User_GameCreateOrConnectWithoutGameInputSchema).array() ]).optional(), + createMany: z.lazy(() => User_GameCreateManyGameInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const GamepinUncheckedCreateNestedOneWithoutGameInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => GamepinCreateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedCreateWithoutGameInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => GamepinCreateOrConnectWithoutGameInputSchema).optional(), + connect: z.lazy(() => GamepinWhereUniqueInputSchema).optional() +}).strict(); + +export const User_GameUncheckedCreateNestedManyWithoutGameInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutGameInputSchema),z.lazy(() => User_GameCreateWithoutGameInputSchema).array(),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => User_GameCreateOrConnectWithoutGameInputSchema),z.lazy(() => User_GameCreateOrConnectWithoutGameInputSchema).array() ]).optional(), + createMany: z.lazy(() => User_GameCreateManyGameInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const EnumGameStateFieldUpdateOperationsInputSchema: z.ZodType = z.object({ + set: z.lazy(() => GameStateSchema).optional() +}).strict(); + +export const BoolFieldUpdateOperationsInputSchema: z.ZodType = z.object({ + set: z.boolean().optional() +}).strict(); + +export const GamepinUpdateOneWithoutGameNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => GamepinCreateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedCreateWithoutGameInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => GamepinCreateOrConnectWithoutGameInputSchema).optional(), + upsert: z.lazy(() => GamepinUpsertWithoutGameInputSchema).optional(), + disconnect: z.boolean().optional(), + delete: z.boolean().optional(), + connect: z.lazy(() => GamepinWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => GamepinUpdateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedUpdateWithoutGameInputSchema) ]).optional(), +}).strict(); + +export const User_GameUpdateManyWithoutGameNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutGameInputSchema),z.lazy(() => User_GameCreateWithoutGameInputSchema).array(),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => User_GameCreateOrConnectWithoutGameInputSchema),z.lazy(() => User_GameCreateOrConnectWithoutGameInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => User_GameUpsertWithWhereUniqueWithoutGameInputSchema),z.lazy(() => User_GameUpsertWithWhereUniqueWithoutGameInputSchema).array() ]).optional(), + createMany: z.lazy(() => User_GameCreateManyGameInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => User_GameUpdateWithWhereUniqueWithoutGameInputSchema),z.lazy(() => User_GameUpdateWithWhereUniqueWithoutGameInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => User_GameUpdateManyWithWhereWithoutGameInputSchema),z.lazy(() => User_GameUpdateManyWithWhereWithoutGameInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => User_GameScalarWhereInputSchema),z.lazy(() => User_GameScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const GamepinUncheckedUpdateOneWithoutGameNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => GamepinCreateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedCreateWithoutGameInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => GamepinCreateOrConnectWithoutGameInputSchema).optional(), + upsert: z.lazy(() => GamepinUpsertWithoutGameInputSchema).optional(), + disconnect: z.boolean().optional(), + delete: z.boolean().optional(), + connect: z.lazy(() => GamepinWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => GamepinUpdateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedUpdateWithoutGameInputSchema) ]).optional(), +}).strict(); + +export const User_GameUncheckedUpdateManyWithoutGameNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutGameInputSchema),z.lazy(() => User_GameCreateWithoutGameInputSchema).array(),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => User_GameCreateOrConnectWithoutGameInputSchema),z.lazy(() => User_GameCreateOrConnectWithoutGameInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => User_GameUpsertWithWhereUniqueWithoutGameInputSchema),z.lazy(() => User_GameUpsertWithWhereUniqueWithoutGameInputSchema).array() ]).optional(), + createMany: z.lazy(() => User_GameCreateManyGameInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => User_GameWhereUniqueInputSchema),z.lazy(() => User_GameWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => User_GameUpdateWithWhereUniqueWithoutGameInputSchema),z.lazy(() => User_GameUpdateWithWhereUniqueWithoutGameInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => User_GameUpdateManyWithWhereWithoutGameInputSchema),z.lazy(() => User_GameUpdateManyWithWhereWithoutGameInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => User_GameScalarWhereInputSchema),z.lazy(() => User_GameScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const GameCreateNestedOneWithoutGamePinInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => GameCreateWithoutGamePinInputSchema),z.lazy(() => GameUncheckedCreateWithoutGamePinInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => GameCreateOrConnectWithoutGamePinInputSchema).optional(), + connect: z.lazy(() => GameWhereUniqueInputSchema).optional() +}).strict(); + +export const GameUpdateOneRequiredWithoutGamePinNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => GameCreateWithoutGamePinInputSchema),z.lazy(() => GameUncheckedCreateWithoutGamePinInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => GameCreateOrConnectWithoutGamePinInputSchema).optional(), + upsert: z.lazy(() => GameUpsertWithoutGamePinInputSchema).optional(), + connect: z.lazy(() => GameWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => GameUpdateWithoutGamePinInputSchema),z.lazy(() => GameUncheckedUpdateWithoutGamePinInputSchema) ]).optional(), +}).strict(); + +export const MoveCreateNestedManyWithoutUser_gameInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => MoveCreateWithoutUser_gameInputSchema),z.lazy(() => MoveCreateWithoutUser_gameInputSchema).array(),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => MoveCreateOrConnectWithoutUser_gameInputSchema),z.lazy(() => MoveCreateOrConnectWithoutUser_gameInputSchema).array() ]).optional(), + createMany: z.lazy(() => MoveCreateManyUser_gameInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const ChatCreateNestedManyWithoutUser_gameInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => ChatCreateWithoutUser_gameInputSchema),z.lazy(() => ChatCreateWithoutUser_gameInputSchema).array(),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => ChatCreateOrConnectWithoutUser_gameInputSchema),z.lazy(() => ChatCreateOrConnectWithoutUser_gameInputSchema).array() ]).optional(), + createMany: z.lazy(() => ChatCreateManyUser_gameInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const GameCreateNestedOneWithoutUsersInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => GameCreateWithoutUsersInputSchema),z.lazy(() => GameUncheckedCreateWithoutUsersInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => GameCreateOrConnectWithoutUsersInputSchema).optional(), + connect: z.lazy(() => GameWhereUniqueInputSchema).optional() +}).strict(); + +export const UserCreateNestedOneWithoutGamesInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => UserCreateWithoutGamesInputSchema),z.lazy(() => UserUncheckedCreateWithoutGamesInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => UserCreateOrConnectWithoutGamesInputSchema).optional(), + connect: z.lazy(() => UserWhereUniqueInputSchema).optional() +}).strict(); + +export const MoveUncheckedCreateNestedManyWithoutUser_gameInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => MoveCreateWithoutUser_gameInputSchema),z.lazy(() => MoveCreateWithoutUser_gameInputSchema).array(),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => MoveCreateOrConnectWithoutUser_gameInputSchema),z.lazy(() => MoveCreateOrConnectWithoutUser_gameInputSchema).array() ]).optional(), + createMany: z.lazy(() => MoveCreateManyUser_gameInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const ChatUncheckedCreateNestedManyWithoutUser_gameInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => ChatCreateWithoutUser_gameInputSchema),z.lazy(() => ChatCreateWithoutUser_gameInputSchema).array(),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => ChatCreateOrConnectWithoutUser_gameInputSchema),z.lazy(() => ChatCreateOrConnectWithoutUser_gameInputSchema).array() ]).optional(), + createMany: z.lazy(() => ChatCreateManyUser_gameInputEnvelopeSchema).optional(), + connect: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), +}).strict(); + +export const IntFieldUpdateOperationsInputSchema: z.ZodType = z.object({ + set: z.number().optional(), + increment: z.number().optional(), + decrement: z.number().optional(), + multiply: z.number().optional(), + divide: z.number().optional() +}).strict(); + +export const MoveUpdateManyWithoutUser_gameNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => MoveCreateWithoutUser_gameInputSchema),z.lazy(() => MoveCreateWithoutUser_gameInputSchema).array(),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => MoveCreateOrConnectWithoutUser_gameInputSchema),z.lazy(() => MoveCreateOrConnectWithoutUser_gameInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => MoveUpsertWithWhereUniqueWithoutUser_gameInputSchema),z.lazy(() => MoveUpsertWithWhereUniqueWithoutUser_gameInputSchema).array() ]).optional(), + createMany: z.lazy(() => MoveCreateManyUser_gameInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => MoveUpdateWithWhereUniqueWithoutUser_gameInputSchema),z.lazy(() => MoveUpdateWithWhereUniqueWithoutUser_gameInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => MoveUpdateManyWithWhereWithoutUser_gameInputSchema),z.lazy(() => MoveUpdateManyWithWhereWithoutUser_gameInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => MoveScalarWhereInputSchema),z.lazy(() => MoveScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const ChatUpdateManyWithoutUser_gameNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => ChatCreateWithoutUser_gameInputSchema),z.lazy(() => ChatCreateWithoutUser_gameInputSchema).array(),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => ChatCreateOrConnectWithoutUser_gameInputSchema),z.lazy(() => ChatCreateOrConnectWithoutUser_gameInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => ChatUpsertWithWhereUniqueWithoutUser_gameInputSchema),z.lazy(() => ChatUpsertWithWhereUniqueWithoutUser_gameInputSchema).array() ]).optional(), + createMany: z.lazy(() => ChatCreateManyUser_gameInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => ChatUpdateWithWhereUniqueWithoutUser_gameInputSchema),z.lazy(() => ChatUpdateWithWhereUniqueWithoutUser_gameInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => ChatUpdateManyWithWhereWithoutUser_gameInputSchema),z.lazy(() => ChatUpdateManyWithWhereWithoutUser_gameInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => ChatScalarWhereInputSchema),z.lazy(() => ChatScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const GameUpdateOneRequiredWithoutUsersNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => GameCreateWithoutUsersInputSchema),z.lazy(() => GameUncheckedCreateWithoutUsersInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => GameCreateOrConnectWithoutUsersInputSchema).optional(), + upsert: z.lazy(() => GameUpsertWithoutUsersInputSchema).optional(), + connect: z.lazy(() => GameWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => GameUpdateWithoutUsersInputSchema),z.lazy(() => GameUncheckedUpdateWithoutUsersInputSchema) ]).optional(), +}).strict(); + +export const UserUpdateOneRequiredWithoutGamesNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => UserCreateWithoutGamesInputSchema),z.lazy(() => UserUncheckedCreateWithoutGamesInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => UserCreateOrConnectWithoutGamesInputSchema).optional(), + upsert: z.lazy(() => UserUpsertWithoutGamesInputSchema).optional(), + connect: z.lazy(() => UserWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => UserUpdateWithoutGamesInputSchema),z.lazy(() => UserUncheckedUpdateWithoutGamesInputSchema) ]).optional(), +}).strict(); + +export const MoveUncheckedUpdateManyWithoutUser_gameNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => MoveCreateWithoutUser_gameInputSchema),z.lazy(() => MoveCreateWithoutUser_gameInputSchema).array(),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => MoveCreateOrConnectWithoutUser_gameInputSchema),z.lazy(() => MoveCreateOrConnectWithoutUser_gameInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => MoveUpsertWithWhereUniqueWithoutUser_gameInputSchema),z.lazy(() => MoveUpsertWithWhereUniqueWithoutUser_gameInputSchema).array() ]).optional(), + createMany: z.lazy(() => MoveCreateManyUser_gameInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => MoveWhereUniqueInputSchema),z.lazy(() => MoveWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => MoveUpdateWithWhereUniqueWithoutUser_gameInputSchema),z.lazy(() => MoveUpdateWithWhereUniqueWithoutUser_gameInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => MoveUpdateManyWithWhereWithoutUser_gameInputSchema),z.lazy(() => MoveUpdateManyWithWhereWithoutUser_gameInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => MoveScalarWhereInputSchema),z.lazy(() => MoveScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const ChatUncheckedUpdateManyWithoutUser_gameNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => ChatCreateWithoutUser_gameInputSchema),z.lazy(() => ChatCreateWithoutUser_gameInputSchema).array(),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema).array() ]).optional(), + connectOrCreate: z.union([ z.lazy(() => ChatCreateOrConnectWithoutUser_gameInputSchema),z.lazy(() => ChatCreateOrConnectWithoutUser_gameInputSchema).array() ]).optional(), + upsert: z.union([ z.lazy(() => ChatUpsertWithWhereUniqueWithoutUser_gameInputSchema),z.lazy(() => ChatUpsertWithWhereUniqueWithoutUser_gameInputSchema).array() ]).optional(), + createMany: z.lazy(() => ChatCreateManyUser_gameInputEnvelopeSchema).optional(), + set: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), + disconnect: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), + delete: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), + connect: z.union([ z.lazy(() => ChatWhereUniqueInputSchema),z.lazy(() => ChatWhereUniqueInputSchema).array() ]).optional(), + update: z.union([ z.lazy(() => ChatUpdateWithWhereUniqueWithoutUser_gameInputSchema),z.lazy(() => ChatUpdateWithWhereUniqueWithoutUser_gameInputSchema).array() ]).optional(), + updateMany: z.union([ z.lazy(() => ChatUpdateManyWithWhereWithoutUser_gameInputSchema),z.lazy(() => ChatUpdateManyWithWhereWithoutUser_gameInputSchema).array() ]).optional(), + deleteMany: z.union([ z.lazy(() => ChatScalarWhereInputSchema),z.lazy(() => ChatScalarWhereInputSchema).array() ]).optional(), +}).strict(); + +export const User_GameCreateNestedOneWithoutMovesInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutMovesInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutMovesInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => User_GameCreateOrConnectWithoutMovesInputSchema).optional(), + connect: z.lazy(() => User_GameWhereUniqueInputSchema).optional() +}).strict(); + +export const User_GameUpdateOneRequiredWithoutMovesNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutMovesInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutMovesInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => User_GameCreateOrConnectWithoutMovesInputSchema).optional(), + upsert: z.lazy(() => User_GameUpsertWithoutMovesInputSchema).optional(), + connect: z.lazy(() => User_GameWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => User_GameUpdateWithoutMovesInputSchema),z.lazy(() => User_GameUncheckedUpdateWithoutMovesInputSchema) ]).optional(), +}).strict(); + +export const User_GameCreateNestedOneWithoutChatsInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutChatsInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutChatsInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => User_GameCreateOrConnectWithoutChatsInputSchema).optional(), + connect: z.lazy(() => User_GameWhereUniqueInputSchema).optional() +}).strict(); + +export const User_GameUpdateOneRequiredWithoutChatsNestedInputSchema: z.ZodType = z.object({ + create: z.union([ z.lazy(() => User_GameCreateWithoutChatsInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutChatsInputSchema) ]).optional(), + connectOrCreate: z.lazy(() => User_GameCreateOrConnectWithoutChatsInputSchema).optional(), + upsert: z.lazy(() => User_GameUpsertWithoutChatsInputSchema).optional(), + connect: z.lazy(() => User_GameWhereUniqueInputSchema).optional(), + update: z.union([ z.lazy(() => User_GameUpdateWithoutChatsInputSchema),z.lazy(() => User_GameUncheckedUpdateWithoutChatsInputSchema) ]).optional(), +}).strict(); + +export const NestedStringFilterSchema: z.ZodType = z.object({ + equals: z.string().optional(), + in: z.union([ z.string().array(),z.string() ]).optional(), + notIn: z.union([ z.string().array(),z.string() ]).optional(), + lt: z.string().optional(), + lte: z.string().optional(), + gt: z.string().optional(), + gte: z.string().optional(), + contains: z.string().optional(), + startsWith: z.string().optional(), + endsWith: z.string().optional(), + not: z.union([ z.string(),z.lazy(() => NestedStringFilterSchema) ]).optional(), +}).strict(); + +export const NestedStringNullableFilterSchema: z.ZodType = z.object({ + equals: z.string().optional().nullable(), + in: z.union([ z.string().array(),z.string() ]).optional().nullable(), + notIn: z.union([ z.string().array(),z.string() ]).optional().nullable(), + lt: z.string().optional(), + lte: z.string().optional(), + gt: z.string().optional(), + gte: z.string().optional(), + contains: z.string().optional(), + startsWith: z.string().optional(), + endsWith: z.string().optional(), + not: z.union([ z.string(),z.lazy(() => NestedStringNullableFilterSchema) ]).optional().nullable(), +}).strict(); + +export const NestedIntNullableFilterSchema: z.ZodType = z.object({ + equals: z.number().optional().nullable(), + in: z.union([ z.number().array(),z.number() ]).optional().nullable(), + notIn: z.union([ z.number().array(),z.number() ]).optional().nullable(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedIntNullableFilterSchema) ]).optional().nullable(), +}).strict(); + +export const NestedStringWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.string().optional(), + in: z.union([ z.string().array(),z.string() ]).optional(), + notIn: z.union([ z.string().array(),z.string() ]).optional(), + lt: z.string().optional(), + lte: z.string().optional(), + gt: z.string().optional(), + gte: z.string().optional(), + contains: z.string().optional(), + startsWith: z.string().optional(), + endsWith: z.string().optional(), + not: z.union([ z.string(),z.lazy(() => NestedStringWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedStringFilterSchema).optional(), + _max: z.lazy(() => NestedStringFilterSchema).optional() +}).strict(); + +export const NestedIntFilterSchema: z.ZodType = z.object({ + equals: z.number().optional(), + in: z.union([ z.number().array(),z.number() ]).optional(), + notIn: z.union([ z.number().array(),z.number() ]).optional(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedIntFilterSchema) ]).optional(), +}).strict(); + +export const NestedStringNullableWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.string().optional().nullable(), + in: z.union([ z.string().array(),z.string() ]).optional().nullable(), + notIn: z.union([ z.string().array(),z.string() ]).optional().nullable(), + lt: z.string().optional(), + lte: z.string().optional(), + gt: z.string().optional(), + gte: z.string().optional(), + contains: z.string().optional(), + startsWith: z.string().optional(), + endsWith: z.string().optional(), + not: z.union([ z.string(),z.lazy(() => NestedStringNullableWithAggregatesFilterSchema) ]).optional().nullable(), + _count: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _min: z.lazy(() => NestedStringNullableFilterSchema).optional(), + _max: z.lazy(() => NestedStringNullableFilterSchema).optional() +}).strict(); + +export const NestedIntNullableWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.number().optional().nullable(), + in: z.union([ z.number().array(),z.number() ]).optional().nullable(), + notIn: z.union([ z.number().array(),z.number() ]).optional().nullable(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedIntNullableWithAggregatesFilterSchema) ]).optional().nullable(), + _count: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _avg: z.lazy(() => NestedFloatNullableFilterSchema).optional(), + _sum: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _min: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _max: z.lazy(() => NestedIntNullableFilterSchema).optional() +}).strict(); + +export const NestedFloatNullableFilterSchema: z.ZodType = z.object({ + equals: z.number().optional().nullable(), + in: z.union([ z.number().array(),z.number() ]).optional().nullable(), + notIn: z.union([ z.number().array(),z.number() ]).optional().nullable(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedFloatNullableFilterSchema) ]).optional().nullable(), +}).strict(); + +export const NestedDateTimeFilterSchema: z.ZodType = z.object({ + equals: z.coerce.date().optional(), + in: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional(), + notIn: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional(), + lt: z.coerce.date().optional(), + lte: z.coerce.date().optional(), + gt: z.coerce.date().optional(), + gte: z.coerce.date().optional(), + not: z.union([ z.coerce.date(),z.lazy(() => NestedDateTimeFilterSchema) ]).optional(), +}).strict(); + +export const NestedDateTimeWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.coerce.date().optional(), + in: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional(), + notIn: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional(), + lt: z.coerce.date().optional(), + lte: z.coerce.date().optional(), + gt: z.coerce.date().optional(), + gte: z.coerce.date().optional(), + not: z.union([ z.coerce.date(),z.lazy(() => NestedDateTimeWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedDateTimeFilterSchema).optional(), + _max: z.lazy(() => NestedDateTimeFilterSchema).optional() +}).strict(); + +export const NestedDateTimeNullableFilterSchema: z.ZodType = z.object({ + equals: z.coerce.date().optional().nullable(), + in: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional().nullable(), + notIn: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional().nullable(), + lt: z.coerce.date().optional(), + lte: z.coerce.date().optional(), + gt: z.coerce.date().optional(), + gte: z.coerce.date().optional(), + not: z.union([ z.coerce.date(),z.lazy(() => NestedDateTimeNullableFilterSchema) ]).optional().nullable(), +}).strict(); + +export const NestedDateTimeNullableWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.coerce.date().optional().nullable(), + in: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional().nullable(), + notIn: z.union([ z.coerce.date().array(),z.coerce.date() ]).optional().nullable(), + lt: z.coerce.date().optional(), + lte: z.coerce.date().optional(), + gt: z.coerce.date().optional(), + gte: z.coerce.date().optional(), + not: z.union([ z.coerce.date(),z.lazy(() => NestedDateTimeNullableWithAggregatesFilterSchema) ]).optional().nullable(), + _count: z.lazy(() => NestedIntNullableFilterSchema).optional(), + _min: z.lazy(() => NestedDateTimeNullableFilterSchema).optional(), + _max: z.lazy(() => NestedDateTimeNullableFilterSchema).optional() +}).strict(); + +export const NestedEnumGameStateFilterSchema: z.ZodType = z.object({ + equals: z.lazy(() => GameStateSchema).optional(), + in: z.union([ z.lazy(() => GameStateSchema).array(),z.lazy(() => GameStateSchema) ]).optional(), + notIn: z.union([ z.lazy(() => GameStateSchema).array(),z.lazy(() => GameStateSchema) ]).optional(), + not: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => NestedEnumGameStateFilterSchema) ]).optional(), +}).strict(); + +export const NestedBoolFilterSchema: z.ZodType = z.object({ + equals: z.boolean().optional(), + not: z.union([ z.boolean(),z.lazy(() => NestedBoolFilterSchema) ]).optional(), +}).strict(); + +export const NestedEnumGameStateWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.lazy(() => GameStateSchema).optional(), + in: z.union([ z.lazy(() => GameStateSchema).array(),z.lazy(() => GameStateSchema) ]).optional(), + notIn: z.union([ z.lazy(() => GameStateSchema).array(),z.lazy(() => GameStateSchema) ]).optional(), + not: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => NestedEnumGameStateWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedEnumGameStateFilterSchema).optional(), + _max: z.lazy(() => NestedEnumGameStateFilterSchema).optional() +}).strict(); + +export const NestedBoolWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.boolean().optional(), + not: z.union([ z.boolean(),z.lazy(() => NestedBoolWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedBoolFilterSchema).optional(), + _max: z.lazy(() => NestedBoolFilterSchema).optional() +}).strict(); + +export const NestedIntWithAggregatesFilterSchema: z.ZodType = z.object({ + equals: z.number().optional(), + in: z.union([ z.number().array(),z.number() ]).optional(), + notIn: z.union([ z.number().array(),z.number() ]).optional(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedIntWithAggregatesFilterSchema) ]).optional(), + _count: z.lazy(() => NestedIntFilterSchema).optional(), + _avg: z.lazy(() => NestedFloatFilterSchema).optional(), + _sum: z.lazy(() => NestedIntFilterSchema).optional(), + _min: z.lazy(() => NestedIntFilterSchema).optional(), + _max: z.lazy(() => NestedIntFilterSchema).optional() +}).strict(); + +export const NestedFloatFilterSchema: z.ZodType = z.object({ + equals: z.number().optional(), + in: z.union([ z.number().array(),z.number() ]).optional(), + notIn: z.union([ z.number().array(),z.number() ]).optional(), + lt: z.number().optional(), + lte: z.number().optional(), + gt: z.number().optional(), + gte: z.number().optional(), + not: z.union([ z.number(),z.lazy(() => NestedFloatFilterSchema) ]).optional(), +}).strict(); + +export const UserCreateWithoutAccountsInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + games: z.lazy(() => User_GameCreateNestedManyWithoutUserInputSchema).optional(), + sessions: z.lazy(() => SessionCreateNestedManyWithoutUserInputSchema).optional() +}).strict(); + +export const UserUncheckedCreateWithoutAccountsInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + games: z.lazy(() => User_GameUncheckedCreateNestedManyWithoutUserInputSchema).optional(), + sessions: z.lazy(() => SessionUncheckedCreateNestedManyWithoutUserInputSchema).optional() +}).strict(); + +export const UserCreateOrConnectWithoutAccountsInputSchema: z.ZodType = z.object({ + where: z.lazy(() => UserWhereUniqueInputSchema), + create: z.union([ z.lazy(() => UserCreateWithoutAccountsInputSchema),z.lazy(() => UserUncheckedCreateWithoutAccountsInputSchema) ]), +}).strict(); + +export const UserUpsertWithoutAccountsInputSchema: z.ZodType = z.object({ + update: z.union([ z.lazy(() => UserUpdateWithoutAccountsInputSchema),z.lazy(() => UserUncheckedUpdateWithoutAccountsInputSchema) ]), + create: z.union([ z.lazy(() => UserCreateWithoutAccountsInputSchema),z.lazy(() => UserUncheckedCreateWithoutAccountsInputSchema) ]), +}).strict(); + +export const UserUpdateWithoutAccountsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + games: z.lazy(() => User_GameUpdateManyWithoutUserNestedInputSchema).optional(), + sessions: z.lazy(() => SessionUpdateManyWithoutUserNestedInputSchema).optional() +}).strict(); + +export const UserUncheckedUpdateWithoutAccountsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + games: z.lazy(() => User_GameUncheckedUpdateManyWithoutUserNestedInputSchema).optional(), + sessions: z.lazy(() => SessionUncheckedUpdateManyWithoutUserNestedInputSchema).optional() +}).strict(); + +export const UserCreateWithoutSessionsInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + games: z.lazy(() => User_GameCreateNestedManyWithoutUserInputSchema).optional(), + accounts: z.lazy(() => AccountCreateNestedManyWithoutUserInputSchema).optional() +}).strict(); + +export const UserUncheckedCreateWithoutSessionsInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + games: z.lazy(() => User_GameUncheckedCreateNestedManyWithoutUserInputSchema).optional(), + accounts: z.lazy(() => AccountUncheckedCreateNestedManyWithoutUserInputSchema).optional() +}).strict(); + +export const UserCreateOrConnectWithoutSessionsInputSchema: z.ZodType = z.object({ + where: z.lazy(() => UserWhereUniqueInputSchema), + create: z.union([ z.lazy(() => UserCreateWithoutSessionsInputSchema),z.lazy(() => UserUncheckedCreateWithoutSessionsInputSchema) ]), +}).strict(); + +export const UserUpsertWithoutSessionsInputSchema: z.ZodType = z.object({ + update: z.union([ z.lazy(() => UserUpdateWithoutSessionsInputSchema),z.lazy(() => UserUncheckedUpdateWithoutSessionsInputSchema) ]), + create: z.union([ z.lazy(() => UserCreateWithoutSessionsInputSchema),z.lazy(() => UserUncheckedCreateWithoutSessionsInputSchema) ]), +}).strict(); + +export const UserUpdateWithoutSessionsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + games: z.lazy(() => User_GameUpdateManyWithoutUserNestedInputSchema).optional(), + accounts: z.lazy(() => AccountUpdateManyWithoutUserNestedInputSchema).optional() +}).strict(); + +export const UserUncheckedUpdateWithoutSessionsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + games: z.lazy(() => User_GameUncheckedUpdateManyWithoutUserNestedInputSchema).optional(), + accounts: z.lazy(() => AccountUncheckedUpdateManyWithoutUserNestedInputSchema).optional() +}).strict(); + +export const User_GameCreateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int(), + moves: z.lazy(() => MoveCreateNestedManyWithoutUser_gameInputSchema).optional(), + chats: z.lazy(() => ChatCreateNestedManyWithoutUser_gameInputSchema).optional(), + game: z.lazy(() => GameCreateNestedOneWithoutUsersInputSchema) +}).strict(); + +export const User_GameUncheckedCreateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + gameId: z.string(), + index: z.number().int(), + moves: z.lazy(() => MoveUncheckedCreateNestedManyWithoutUser_gameInputSchema).optional(), + chats: z.lazy(() => ChatUncheckedCreateNestedManyWithoutUser_gameInputSchema).optional() +}).strict(); + +export const User_GameCreateOrConnectWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameWhereUniqueInputSchema), + create: z.union([ z.lazy(() => User_GameCreateWithoutUserInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema) ]), +}).strict(); + +export const User_GameCreateManyUserInputEnvelopeSchema: z.ZodType = z.object({ + data: z.union([ z.lazy(() => User_GameCreateManyUserInputSchema),z.lazy(() => User_GameCreateManyUserInputSchema).array() ]), + skipDuplicates: z.boolean().optional() +}).strict(); + +export const AccountCreateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + type: z.string(), + provider: z.string(), + providerAccountId: z.string(), + refresh_token: z.string().optional().nullable(), + access_token: z.string().optional().nullable(), + expires_at: z.number().int().optional().nullable(), + ext_expires_in: z.number().int().optional().nullable(), + token_type: z.string().optional().nullable(), + scope: z.string().optional().nullable(), + id_token: z.string().optional().nullable(), + session_state: z.string().optional().nullable(), + oauth_token_secret: z.string().optional().nullable(), + oauth_token: z.string().optional().nullable() +}).strict(); + +export const AccountUncheckedCreateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + type: z.string(), + provider: z.string(), + providerAccountId: z.string(), + refresh_token: z.string().optional().nullable(), + access_token: z.string().optional().nullable(), + expires_at: z.number().int().optional().nullable(), + ext_expires_in: z.number().int().optional().nullable(), + token_type: z.string().optional().nullable(), + scope: z.string().optional().nullable(), + id_token: z.string().optional().nullable(), + session_state: z.string().optional().nullable(), + oauth_token_secret: z.string().optional().nullable(), + oauth_token: z.string().optional().nullable() +}).strict(); + +export const AccountCreateOrConnectWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => AccountWhereUniqueInputSchema), + create: z.union([ z.lazy(() => AccountCreateWithoutUserInputSchema),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema) ]), +}).strict(); + +export const AccountCreateManyUserInputEnvelopeSchema: z.ZodType = z.object({ + data: z.union([ z.lazy(() => AccountCreateManyUserInputSchema),z.lazy(() => AccountCreateManyUserInputSchema).array() ]), + skipDuplicates: z.boolean().optional() +}).strict(); + +export const SessionCreateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + sessionToken: z.string(), + expires: z.coerce.date() +}).strict(); + +export const SessionUncheckedCreateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + sessionToken: z.string(), + expires: z.coerce.date() +}).strict(); + +export const SessionCreateOrConnectWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => SessionWhereUniqueInputSchema), + create: z.union([ z.lazy(() => SessionCreateWithoutUserInputSchema),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema) ]), +}).strict(); + +export const SessionCreateManyUserInputEnvelopeSchema: z.ZodType = z.object({ + data: z.union([ z.lazy(() => SessionCreateManyUserInputSchema),z.lazy(() => SessionCreateManyUserInputSchema).array() ]), + skipDuplicates: z.boolean().optional() +}).strict(); + +export const User_GameUpsertWithWhereUniqueWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameWhereUniqueInputSchema), + update: z.union([ z.lazy(() => User_GameUpdateWithoutUserInputSchema),z.lazy(() => User_GameUncheckedUpdateWithoutUserInputSchema) ]), + create: z.union([ z.lazy(() => User_GameCreateWithoutUserInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutUserInputSchema) ]), +}).strict(); + +export const User_GameUpdateWithWhereUniqueWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameWhereUniqueInputSchema), + data: z.union([ z.lazy(() => User_GameUpdateWithoutUserInputSchema),z.lazy(() => User_GameUncheckedUpdateWithoutUserInputSchema) ]), +}).strict(); + +export const User_GameUpdateManyWithWhereWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameScalarWhereInputSchema), + data: z.union([ z.lazy(() => User_GameUpdateManyMutationInputSchema),z.lazy(() => User_GameUncheckedUpdateManyWithoutGamesInputSchema) ]), +}).strict(); + +export const User_GameScalarWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => User_GameScalarWhereInputSchema),z.lazy(() => User_GameScalarWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => User_GameScalarWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => User_GameScalarWhereInputSchema),z.lazy(() => User_GameScalarWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + gameId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + index: z.union([ z.lazy(() => IntFilterSchema),z.number() ]).optional(), +}).strict(); + +export const AccountUpsertWithWhereUniqueWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => AccountWhereUniqueInputSchema), + update: z.union([ z.lazy(() => AccountUpdateWithoutUserInputSchema),z.lazy(() => AccountUncheckedUpdateWithoutUserInputSchema) ]), + create: z.union([ z.lazy(() => AccountCreateWithoutUserInputSchema),z.lazy(() => AccountUncheckedCreateWithoutUserInputSchema) ]), +}).strict(); + +export const AccountUpdateWithWhereUniqueWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => AccountWhereUniqueInputSchema), + data: z.union([ z.lazy(() => AccountUpdateWithoutUserInputSchema),z.lazy(() => AccountUncheckedUpdateWithoutUserInputSchema) ]), +}).strict(); + +export const AccountUpdateManyWithWhereWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => AccountScalarWhereInputSchema), + data: z.union([ z.lazy(() => AccountUpdateManyMutationInputSchema),z.lazy(() => AccountUncheckedUpdateManyWithoutAccountsInputSchema) ]), +}).strict(); + +export const AccountScalarWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => AccountScalarWhereInputSchema),z.lazy(() => AccountScalarWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => AccountScalarWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => AccountScalarWhereInputSchema),z.lazy(() => AccountScalarWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + type: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + provider: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + providerAccountId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + refresh_token: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + access_token: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + expires_at: z.union([ z.lazy(() => IntNullableFilterSchema),z.number() ]).optional().nullable(), + ext_expires_in: z.union([ z.lazy(() => IntNullableFilterSchema),z.number() ]).optional().nullable(), + token_type: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + scope: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + id_token: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + session_state: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + oauth_token_secret: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + oauth_token: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), +}).strict(); + +export const SessionUpsertWithWhereUniqueWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => SessionWhereUniqueInputSchema), + update: z.union([ z.lazy(() => SessionUpdateWithoutUserInputSchema),z.lazy(() => SessionUncheckedUpdateWithoutUserInputSchema) ]), + create: z.union([ z.lazy(() => SessionCreateWithoutUserInputSchema),z.lazy(() => SessionUncheckedCreateWithoutUserInputSchema) ]), +}).strict(); + +export const SessionUpdateWithWhereUniqueWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => SessionWhereUniqueInputSchema), + data: z.union([ z.lazy(() => SessionUpdateWithoutUserInputSchema),z.lazy(() => SessionUncheckedUpdateWithoutUserInputSchema) ]), +}).strict(); + +export const SessionUpdateManyWithWhereWithoutUserInputSchema: z.ZodType = z.object({ + where: z.lazy(() => SessionScalarWhereInputSchema), + data: z.union([ z.lazy(() => SessionUpdateManyMutationInputSchema),z.lazy(() => SessionUncheckedUpdateManyWithoutSessionsInputSchema) ]), +}).strict(); + +export const SessionScalarWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => SessionScalarWhereInputSchema),z.lazy(() => SessionScalarWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => SessionScalarWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => SessionScalarWhereInputSchema),z.lazy(() => SessionScalarWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + sessionToken: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + userId: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + expires: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), +}).strict(); + +export const GamepinCreateWithoutGameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + pin: z.string() +}).strict(); + +export const GamepinUncheckedCreateWithoutGameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + pin: z.string() +}).strict(); + +export const GamepinCreateOrConnectWithoutGameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => GamepinWhereUniqueInputSchema), + create: z.union([ z.lazy(() => GamepinCreateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedCreateWithoutGameInputSchema) ]), +}).strict(); + +export const User_GameCreateWithoutGameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int(), + moves: z.lazy(() => MoveCreateNestedManyWithoutUser_gameInputSchema).optional(), + chats: z.lazy(() => ChatCreateNestedManyWithoutUser_gameInputSchema).optional(), + user: z.lazy(() => UserCreateNestedOneWithoutGamesInputSchema) +}).strict(); + +export const User_GameUncheckedCreateWithoutGameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + userId: z.string(), + index: z.number().int(), + moves: z.lazy(() => MoveUncheckedCreateNestedManyWithoutUser_gameInputSchema).optional(), + chats: z.lazy(() => ChatUncheckedCreateNestedManyWithoutUser_gameInputSchema).optional() +}).strict(); + +export const User_GameCreateOrConnectWithoutGameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameWhereUniqueInputSchema), + create: z.union([ z.lazy(() => User_GameCreateWithoutGameInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema) ]), +}).strict(); + +export const User_GameCreateManyGameInputEnvelopeSchema: z.ZodType = z.object({ + data: z.union([ z.lazy(() => User_GameCreateManyGameInputSchema),z.lazy(() => User_GameCreateManyGameInputSchema).array() ]), + skipDuplicates: z.boolean().optional() +}).strict(); + +export const GamepinUpsertWithoutGameInputSchema: z.ZodType = z.object({ + update: z.union([ z.lazy(() => GamepinUpdateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedUpdateWithoutGameInputSchema) ]), + create: z.union([ z.lazy(() => GamepinCreateWithoutGameInputSchema),z.lazy(() => GamepinUncheckedCreateWithoutGameInputSchema) ]), +}).strict(); + +export const GamepinUpdateWithoutGameInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + pin: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const GamepinUncheckedUpdateWithoutGameInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + pin: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const User_GameUpsertWithWhereUniqueWithoutGameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameWhereUniqueInputSchema), + update: z.union([ z.lazy(() => User_GameUpdateWithoutGameInputSchema),z.lazy(() => User_GameUncheckedUpdateWithoutGameInputSchema) ]), + create: z.union([ z.lazy(() => User_GameCreateWithoutGameInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutGameInputSchema) ]), +}).strict(); + +export const User_GameUpdateWithWhereUniqueWithoutGameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameWhereUniqueInputSchema), + data: z.union([ z.lazy(() => User_GameUpdateWithoutGameInputSchema),z.lazy(() => User_GameUncheckedUpdateWithoutGameInputSchema) ]), +}).strict(); + +export const User_GameUpdateManyWithWhereWithoutGameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameScalarWhereInputSchema), + data: z.union([ z.lazy(() => User_GameUpdateManyMutationInputSchema),z.lazy(() => User_GameUncheckedUpdateManyWithoutUsersInputSchema) ]), +}).strict(); + +export const GameCreateWithoutGamePinInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + state: z.lazy(() => GameStateSchema).optional(), + allowSpectators: z.boolean().optional(), + allowSpecials: z.boolean().optional(), + allowChat: z.boolean().optional(), + allowMarkDraw: z.boolean().optional(), + users: z.lazy(() => User_GameCreateNestedManyWithoutGameInputSchema).optional() +}).strict(); + +export const GameUncheckedCreateWithoutGamePinInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + state: z.lazy(() => GameStateSchema).optional(), + allowSpectators: z.boolean().optional(), + allowSpecials: z.boolean().optional(), + allowChat: z.boolean().optional(), + allowMarkDraw: z.boolean().optional(), + users: z.lazy(() => User_GameUncheckedCreateNestedManyWithoutGameInputSchema).optional() +}).strict(); + +export const GameCreateOrConnectWithoutGamePinInputSchema: z.ZodType = z.object({ + where: z.lazy(() => GameWhereUniqueInputSchema), + create: z.union([ z.lazy(() => GameCreateWithoutGamePinInputSchema),z.lazy(() => GameUncheckedCreateWithoutGamePinInputSchema) ]), +}).strict(); + +export const GameUpsertWithoutGamePinInputSchema: z.ZodType = z.object({ + update: z.union([ z.lazy(() => GameUpdateWithoutGamePinInputSchema),z.lazy(() => GameUncheckedUpdateWithoutGamePinInputSchema) ]), + create: z.union([ z.lazy(() => GameCreateWithoutGamePinInputSchema),z.lazy(() => GameUncheckedCreateWithoutGamePinInputSchema) ]), +}).strict(); + +export const GameUpdateWithoutGamePinInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + state: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => EnumGameStateFieldUpdateOperationsInputSchema) ]).optional(), + allowSpectators: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowSpecials: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowChat: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowMarkDraw: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + users: z.lazy(() => User_GameUpdateManyWithoutGameNestedInputSchema).optional() +}).strict(); + +export const GameUncheckedUpdateWithoutGamePinInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + state: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => EnumGameStateFieldUpdateOperationsInputSchema) ]).optional(), + allowSpectators: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowSpecials: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowChat: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowMarkDraw: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + users: z.lazy(() => User_GameUncheckedUpdateManyWithoutGameNestedInputSchema).optional() +}).strict(); + +export const MoveCreateWithoutUser_gameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int() +}).strict(); + +export const MoveUncheckedCreateWithoutUser_gameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int() +}).strict(); + +export const MoveCreateOrConnectWithoutUser_gameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => MoveWhereUniqueInputSchema), + create: z.union([ z.lazy(() => MoveCreateWithoutUser_gameInputSchema),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema) ]), +}).strict(); + +export const MoveCreateManyUser_gameInputEnvelopeSchema: z.ZodType = z.object({ + data: z.union([ z.lazy(() => MoveCreateManyUser_gameInputSchema),z.lazy(() => MoveCreateManyUser_gameInputSchema).array() ]), + skipDuplicates: z.boolean().optional() +}).strict(); + +export const ChatCreateWithoutUser_gameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + message: z.string().optional().nullable(), + event: z.string().optional().nullable() +}).strict(); + +export const ChatUncheckedCreateWithoutUser_gameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + message: z.string().optional().nullable(), + event: z.string().optional().nullable() +}).strict(); + +export const ChatCreateOrConnectWithoutUser_gameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => ChatWhereUniqueInputSchema), + create: z.union([ z.lazy(() => ChatCreateWithoutUser_gameInputSchema),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema) ]), +}).strict(); + +export const ChatCreateManyUser_gameInputEnvelopeSchema: z.ZodType = z.object({ + data: z.union([ z.lazy(() => ChatCreateManyUser_gameInputSchema),z.lazy(() => ChatCreateManyUser_gameInputSchema).array() ]), + skipDuplicates: z.boolean().optional() +}).strict(); + +export const GameCreateWithoutUsersInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + state: z.lazy(() => GameStateSchema).optional(), + allowSpectators: z.boolean().optional(), + allowSpecials: z.boolean().optional(), + allowChat: z.boolean().optional(), + allowMarkDraw: z.boolean().optional(), + gamePin: z.lazy(() => GamepinCreateNestedOneWithoutGameInputSchema).optional() +}).strict(); + +export const GameUncheckedCreateWithoutUsersInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + state: z.lazy(() => GameStateSchema).optional(), + allowSpectators: z.boolean().optional(), + allowSpecials: z.boolean().optional(), + allowChat: z.boolean().optional(), + allowMarkDraw: z.boolean().optional(), + gamePin: z.lazy(() => GamepinUncheckedCreateNestedOneWithoutGameInputSchema).optional() +}).strict(); + +export const GameCreateOrConnectWithoutUsersInputSchema: z.ZodType = z.object({ + where: z.lazy(() => GameWhereUniqueInputSchema), + create: z.union([ z.lazy(() => GameCreateWithoutUsersInputSchema),z.lazy(() => GameUncheckedCreateWithoutUsersInputSchema) ]), +}).strict(); + +export const UserCreateWithoutGamesInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + accounts: z.lazy(() => AccountCreateNestedManyWithoutUserInputSchema).optional(), + sessions: z.lazy(() => SessionCreateNestedManyWithoutUserInputSchema).optional() +}).strict(); + +export const UserUncheckedCreateWithoutGamesInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + name: z.string().optional().nullable(), + email: z.string().optional().nullable(), + emailVerified: z.coerce.date().optional().nullable(), + image: z.string().optional().nullable(), + createdAt: z.coerce.date().optional(), + updatedAt: z.coerce.date().optional(), + accounts: z.lazy(() => AccountUncheckedCreateNestedManyWithoutUserInputSchema).optional(), + sessions: z.lazy(() => SessionUncheckedCreateNestedManyWithoutUserInputSchema).optional() +}).strict(); + +export const UserCreateOrConnectWithoutGamesInputSchema: z.ZodType = z.object({ + where: z.lazy(() => UserWhereUniqueInputSchema), + create: z.union([ z.lazy(() => UserCreateWithoutGamesInputSchema),z.lazy(() => UserUncheckedCreateWithoutGamesInputSchema) ]), +}).strict(); + +export const MoveUpsertWithWhereUniqueWithoutUser_gameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => MoveWhereUniqueInputSchema), + update: z.union([ z.lazy(() => MoveUpdateWithoutUser_gameInputSchema),z.lazy(() => MoveUncheckedUpdateWithoutUser_gameInputSchema) ]), + create: z.union([ z.lazy(() => MoveCreateWithoutUser_gameInputSchema),z.lazy(() => MoveUncheckedCreateWithoutUser_gameInputSchema) ]), +}).strict(); + +export const MoveUpdateWithWhereUniqueWithoutUser_gameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => MoveWhereUniqueInputSchema), + data: z.union([ z.lazy(() => MoveUpdateWithoutUser_gameInputSchema),z.lazy(() => MoveUncheckedUpdateWithoutUser_gameInputSchema) ]), +}).strict(); + +export const MoveUpdateManyWithWhereWithoutUser_gameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => MoveScalarWhereInputSchema), + data: z.union([ z.lazy(() => MoveUpdateManyMutationInputSchema),z.lazy(() => MoveUncheckedUpdateManyWithoutMovesInputSchema) ]), +}).strict(); + +export const MoveScalarWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => MoveScalarWhereInputSchema),z.lazy(() => MoveScalarWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => MoveScalarWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => MoveScalarWhereInputSchema),z.lazy(() => MoveScalarWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + index: z.union([ z.lazy(() => IntFilterSchema),z.number() ]).optional(), + user_game_id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), +}).strict(); + +export const ChatUpsertWithWhereUniqueWithoutUser_gameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => ChatWhereUniqueInputSchema), + update: z.union([ z.lazy(() => ChatUpdateWithoutUser_gameInputSchema),z.lazy(() => ChatUncheckedUpdateWithoutUser_gameInputSchema) ]), + create: z.union([ z.lazy(() => ChatCreateWithoutUser_gameInputSchema),z.lazy(() => ChatUncheckedCreateWithoutUser_gameInputSchema) ]), +}).strict(); + +export const ChatUpdateWithWhereUniqueWithoutUser_gameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => ChatWhereUniqueInputSchema), + data: z.union([ z.lazy(() => ChatUpdateWithoutUser_gameInputSchema),z.lazy(() => ChatUncheckedUpdateWithoutUser_gameInputSchema) ]), +}).strict(); + +export const ChatUpdateManyWithWhereWithoutUser_gameInputSchema: z.ZodType = z.object({ + where: z.lazy(() => ChatScalarWhereInputSchema), + data: z.union([ z.lazy(() => ChatUpdateManyMutationInputSchema),z.lazy(() => ChatUncheckedUpdateManyWithoutChatsInputSchema) ]), +}).strict(); + +export const ChatScalarWhereInputSchema: z.ZodType = z.object({ + AND: z.union([ z.lazy(() => ChatScalarWhereInputSchema),z.lazy(() => ChatScalarWhereInputSchema).array() ]).optional(), + OR: z.lazy(() => ChatScalarWhereInputSchema).array().optional(), + NOT: z.union([ z.lazy(() => ChatScalarWhereInputSchema),z.lazy(() => ChatScalarWhereInputSchema).array() ]).optional(), + id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), + createdAt: z.union([ z.lazy(() => DateTimeFilterSchema),z.coerce.date() ]).optional(), + message: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + event: z.union([ z.lazy(() => StringNullableFilterSchema),z.string() ]).optional().nullable(), + user_game_id: z.union([ z.lazy(() => StringFilterSchema),z.string() ]).optional(), +}).strict(); + +export const GameUpsertWithoutUsersInputSchema: z.ZodType = z.object({ + update: z.union([ z.lazy(() => GameUpdateWithoutUsersInputSchema),z.lazy(() => GameUncheckedUpdateWithoutUsersInputSchema) ]), + create: z.union([ z.lazy(() => GameCreateWithoutUsersInputSchema),z.lazy(() => GameUncheckedCreateWithoutUsersInputSchema) ]), +}).strict(); + +export const GameUpdateWithoutUsersInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + state: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => EnumGameStateFieldUpdateOperationsInputSchema) ]).optional(), + allowSpectators: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowSpecials: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowChat: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowMarkDraw: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + gamePin: z.lazy(() => GamepinUpdateOneWithoutGameNestedInputSchema).optional() +}).strict(); + +export const GameUncheckedUpdateWithoutUsersInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + state: z.union([ z.lazy(() => GameStateSchema),z.lazy(() => EnumGameStateFieldUpdateOperationsInputSchema) ]).optional(), + allowSpectators: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowSpecials: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowChat: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + allowMarkDraw: z.union([ z.boolean(),z.lazy(() => BoolFieldUpdateOperationsInputSchema) ]).optional(), + gamePin: z.lazy(() => GamepinUncheckedUpdateOneWithoutGameNestedInputSchema).optional() +}).strict(); + +export const UserUpsertWithoutGamesInputSchema: z.ZodType = z.object({ + update: z.union([ z.lazy(() => UserUpdateWithoutGamesInputSchema),z.lazy(() => UserUncheckedUpdateWithoutGamesInputSchema) ]), + create: z.union([ z.lazy(() => UserCreateWithoutGamesInputSchema),z.lazy(() => UserUncheckedCreateWithoutGamesInputSchema) ]), +}).strict(); + +export const UserUpdateWithoutGamesInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + accounts: z.lazy(() => AccountUpdateManyWithoutUserNestedInputSchema).optional(), + sessions: z.lazy(() => SessionUpdateManyWithoutUserNestedInputSchema).optional() +}).strict(); + +export const UserUncheckedUpdateWithoutGamesInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + name: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + email: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + emailVerified: z.union([ z.coerce.date(),z.lazy(() => NullableDateTimeFieldUpdateOperationsInputSchema) ]).optional().nullable(), + image: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + updatedAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + accounts: z.lazy(() => AccountUncheckedUpdateManyWithoutUserNestedInputSchema).optional(), + sessions: z.lazy(() => SessionUncheckedUpdateManyWithoutUserNestedInputSchema).optional() +}).strict(); + +export const User_GameCreateWithoutMovesInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int(), + chats: z.lazy(() => ChatCreateNestedManyWithoutUser_gameInputSchema).optional(), + game: z.lazy(() => GameCreateNestedOneWithoutUsersInputSchema), + user: z.lazy(() => UserCreateNestedOneWithoutGamesInputSchema) +}).strict(); + +export const User_GameUncheckedCreateWithoutMovesInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + gameId: z.string(), + userId: z.string(), + index: z.number().int(), + chats: z.lazy(() => ChatUncheckedCreateNestedManyWithoutUser_gameInputSchema).optional() +}).strict(); + +export const User_GameCreateOrConnectWithoutMovesInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameWhereUniqueInputSchema), + create: z.union([ z.lazy(() => User_GameCreateWithoutMovesInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutMovesInputSchema) ]), +}).strict(); + +export const User_GameUpsertWithoutMovesInputSchema: z.ZodType = z.object({ + update: z.union([ z.lazy(() => User_GameUpdateWithoutMovesInputSchema),z.lazy(() => User_GameUncheckedUpdateWithoutMovesInputSchema) ]), + create: z.union([ z.lazy(() => User_GameCreateWithoutMovesInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutMovesInputSchema) ]), +}).strict(); + +export const User_GameUpdateWithoutMovesInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + chats: z.lazy(() => ChatUpdateManyWithoutUser_gameNestedInputSchema).optional(), + game: z.lazy(() => GameUpdateOneRequiredWithoutUsersNestedInputSchema).optional(), + user: z.lazy(() => UserUpdateOneRequiredWithoutGamesNestedInputSchema).optional() +}).strict(); + +export const User_GameUncheckedUpdateWithoutMovesInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + gameId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + chats: z.lazy(() => ChatUncheckedUpdateManyWithoutUser_gameNestedInputSchema).optional() +}).strict(); + +export const User_GameCreateWithoutChatsInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int(), + moves: z.lazy(() => MoveCreateNestedManyWithoutUser_gameInputSchema).optional(), + game: z.lazy(() => GameCreateNestedOneWithoutUsersInputSchema), + user: z.lazy(() => UserCreateNestedOneWithoutGamesInputSchema) +}).strict(); + +export const User_GameUncheckedCreateWithoutChatsInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + gameId: z.string(), + userId: z.string(), + index: z.number().int(), + moves: z.lazy(() => MoveUncheckedCreateNestedManyWithoutUser_gameInputSchema).optional() +}).strict(); + +export const User_GameCreateOrConnectWithoutChatsInputSchema: z.ZodType = z.object({ + where: z.lazy(() => User_GameWhereUniqueInputSchema), + create: z.union([ z.lazy(() => User_GameCreateWithoutChatsInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutChatsInputSchema) ]), +}).strict(); + +export const User_GameUpsertWithoutChatsInputSchema: z.ZodType = z.object({ + update: z.union([ z.lazy(() => User_GameUpdateWithoutChatsInputSchema),z.lazy(() => User_GameUncheckedUpdateWithoutChatsInputSchema) ]), + create: z.union([ z.lazy(() => User_GameCreateWithoutChatsInputSchema),z.lazy(() => User_GameUncheckedCreateWithoutChatsInputSchema) ]), +}).strict(); + +export const User_GameUpdateWithoutChatsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + moves: z.lazy(() => MoveUpdateManyWithoutUser_gameNestedInputSchema).optional(), + game: z.lazy(() => GameUpdateOneRequiredWithoutUsersNestedInputSchema).optional(), + user: z.lazy(() => UserUpdateOneRequiredWithoutGamesNestedInputSchema).optional() +}).strict(); + +export const User_GameUncheckedUpdateWithoutChatsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + gameId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + moves: z.lazy(() => MoveUncheckedUpdateManyWithoutUser_gameNestedInputSchema).optional() +}).strict(); + +export const User_GameCreateManyUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + gameId: z.string(), + index: z.number().int() +}).strict(); + +export const AccountCreateManyUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + type: z.string(), + provider: z.string(), + providerAccountId: z.string(), + refresh_token: z.string().optional().nullable(), + access_token: z.string().optional().nullable(), + expires_at: z.number().int().optional().nullable(), + ext_expires_in: z.number().int().optional().nullable(), + token_type: z.string().optional().nullable(), + scope: z.string().optional().nullable(), + id_token: z.string().optional().nullable(), + session_state: z.string().optional().nullable(), + oauth_token_secret: z.string().optional().nullable(), + oauth_token: z.string().optional().nullable() +}).strict(); + +export const SessionCreateManyUserInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + sessionToken: z.string(), + expires: z.coerce.date() +}).strict(); + +export const User_GameUpdateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + moves: z.lazy(() => MoveUpdateManyWithoutUser_gameNestedInputSchema).optional(), + chats: z.lazy(() => ChatUpdateManyWithoutUser_gameNestedInputSchema).optional(), + game: z.lazy(() => GameUpdateOneRequiredWithoutUsersNestedInputSchema).optional() +}).strict(); + +export const User_GameUncheckedUpdateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + gameId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + moves: z.lazy(() => MoveUncheckedUpdateManyWithoutUser_gameNestedInputSchema).optional(), + chats: z.lazy(() => ChatUncheckedUpdateManyWithoutUser_gameNestedInputSchema).optional() +}).strict(); + +export const User_GameUncheckedUpdateManyWithoutGamesInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + gameId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const AccountUpdateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + type: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + provider: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + providerAccountId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + refresh_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + access_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + expires_at: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + ext_expires_in: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + token_type: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + scope: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + id_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + session_state: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token_secret: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const AccountUncheckedUpdateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + type: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + provider: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + providerAccountId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + refresh_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + access_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + expires_at: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + ext_expires_in: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + token_type: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + scope: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + id_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + session_state: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token_secret: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const AccountUncheckedUpdateManyWithoutAccountsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + type: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + provider: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + providerAccountId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + refresh_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + access_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + expires_at: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + ext_expires_in: z.union([ z.number().int(),z.lazy(() => NullableIntFieldUpdateOperationsInputSchema) ]).optional().nullable(), + token_type: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + scope: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + id_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + session_state: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token_secret: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + oauth_token: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const SessionUpdateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + sessionToken: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const SessionUncheckedUpdateWithoutUserInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + sessionToken: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const SessionUncheckedUpdateManyWithoutSessionsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + sessionToken: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + expires: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const User_GameCreateManyGameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + userId: z.string(), + index: z.number().int() +}).strict(); + +export const User_GameUpdateWithoutGameInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + moves: z.lazy(() => MoveUpdateManyWithoutUser_gameNestedInputSchema).optional(), + chats: z.lazy(() => ChatUpdateManyWithoutUser_gameNestedInputSchema).optional(), + user: z.lazy(() => UserUpdateOneRequiredWithoutGamesNestedInputSchema).optional() +}).strict(); + +export const User_GameUncheckedUpdateWithoutGameInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), + moves: z.lazy(() => MoveUncheckedUpdateManyWithoutUser_gameNestedInputSchema).optional(), + chats: z.lazy(() => ChatUncheckedUpdateManyWithoutUser_gameNestedInputSchema).optional() +}).strict(); + +export const User_GameUncheckedUpdateManyWithoutUsersInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + userId: z.union([ z.string(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const MoveCreateManyUser_gameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + index: z.number().int() +}).strict(); + +export const ChatCreateManyUser_gameInputSchema: z.ZodType = z.object({ + id: z.string().cuid().optional(), + createdAt: z.coerce.date().optional(), + message: z.string().optional().nullable(), + event: z.string().optional().nullable() +}).strict(); + +export const MoveUpdateWithoutUser_gameInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const MoveUncheckedUpdateWithoutUser_gameInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const MoveUncheckedUpdateManyWithoutMovesInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + index: z.union([ z.number().int(),z.lazy(() => IntFieldUpdateOperationsInputSchema) ]).optional(), +}).strict(); + +export const ChatUpdateWithoutUser_gameInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + message: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + event: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const ChatUncheckedUpdateWithoutUser_gameInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + message: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + event: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +export const ChatUncheckedUpdateManyWithoutChatsInputSchema: z.ZodType = z.object({ + id: z.union([ z.string().cuid(),z.lazy(() => StringFieldUpdateOperationsInputSchema) ]).optional(), + createdAt: z.union([ z.coerce.date(),z.lazy(() => DateTimeFieldUpdateOperationsInputSchema) ]).optional(), + message: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), + event: z.union([ z.string(),z.lazy(() => NullableStringFieldUpdateOperationsInputSchema) ]).optional().nullable(), +}).strict(); + +///////////////////////////////////////// +// ARGS +///////////////////////////////////////// + +export const AccountFindFirstArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + where: AccountWhereInputSchema.optional(), + orderBy: z.union([ AccountOrderByWithRelationInputSchema.array(),AccountOrderByWithRelationInputSchema ]).optional(), + cursor: AccountWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: AccountScalarFieldEnumSchema.array().optional(), +}).strict() + +export const AccountFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + where: AccountWhereInputSchema.optional(), + orderBy: z.union([ AccountOrderByWithRelationInputSchema.array(),AccountOrderByWithRelationInputSchema ]).optional(), + cursor: AccountWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: AccountScalarFieldEnumSchema.array().optional(), +}).strict() + +export const AccountFindManyArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + where: AccountWhereInputSchema.optional(), + orderBy: z.union([ AccountOrderByWithRelationInputSchema.array(),AccountOrderByWithRelationInputSchema ]).optional(), + cursor: AccountWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: AccountScalarFieldEnumSchema.array().optional(), +}).strict() + +export const AccountAggregateArgsSchema: z.ZodType = z.object({ + where: AccountWhereInputSchema.optional(), + orderBy: z.union([ AccountOrderByWithRelationInputSchema.array(),AccountOrderByWithRelationInputSchema ]).optional(), + cursor: AccountWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const AccountGroupByArgsSchema: z.ZodType = z.object({ + where: AccountWhereInputSchema.optional(), + orderBy: z.union([ AccountOrderByWithAggregationInputSchema.array(),AccountOrderByWithAggregationInputSchema ]).optional(), + by: AccountScalarFieldEnumSchema.array(), + having: AccountScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const AccountFindUniqueArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + where: AccountWhereUniqueInputSchema, +}).strict() + +export const AccountFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + where: AccountWhereUniqueInputSchema, +}).strict() + +export const SessionFindFirstArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + where: SessionWhereInputSchema.optional(), + orderBy: z.union([ SessionOrderByWithRelationInputSchema.array(),SessionOrderByWithRelationInputSchema ]).optional(), + cursor: SessionWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: SessionScalarFieldEnumSchema.array().optional(), +}).strict() + +export const SessionFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + where: SessionWhereInputSchema.optional(), + orderBy: z.union([ SessionOrderByWithRelationInputSchema.array(),SessionOrderByWithRelationInputSchema ]).optional(), + cursor: SessionWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: SessionScalarFieldEnumSchema.array().optional(), +}).strict() + +export const SessionFindManyArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + where: SessionWhereInputSchema.optional(), + orderBy: z.union([ SessionOrderByWithRelationInputSchema.array(),SessionOrderByWithRelationInputSchema ]).optional(), + cursor: SessionWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: SessionScalarFieldEnumSchema.array().optional(), +}).strict() + +export const SessionAggregateArgsSchema: z.ZodType = z.object({ + where: SessionWhereInputSchema.optional(), + orderBy: z.union([ SessionOrderByWithRelationInputSchema.array(),SessionOrderByWithRelationInputSchema ]).optional(), + cursor: SessionWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const SessionGroupByArgsSchema: z.ZodType = z.object({ + where: SessionWhereInputSchema.optional(), + orderBy: z.union([ SessionOrderByWithAggregationInputSchema.array(),SessionOrderByWithAggregationInputSchema ]).optional(), + by: SessionScalarFieldEnumSchema.array(), + having: SessionScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const SessionFindUniqueArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + where: SessionWhereUniqueInputSchema, +}).strict() + +export const SessionFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + where: SessionWhereUniqueInputSchema, +}).strict() + +export const UserFindFirstArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + where: UserWhereInputSchema.optional(), + orderBy: z.union([ UserOrderByWithRelationInputSchema.array(),UserOrderByWithRelationInputSchema ]).optional(), + cursor: UserWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: UserScalarFieldEnumSchema.array().optional(), +}).strict() + +export const UserFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + where: UserWhereInputSchema.optional(), + orderBy: z.union([ UserOrderByWithRelationInputSchema.array(),UserOrderByWithRelationInputSchema ]).optional(), + cursor: UserWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: UserScalarFieldEnumSchema.array().optional(), +}).strict() + +export const UserFindManyArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + where: UserWhereInputSchema.optional(), + orderBy: z.union([ UserOrderByWithRelationInputSchema.array(),UserOrderByWithRelationInputSchema ]).optional(), + cursor: UserWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: UserScalarFieldEnumSchema.array().optional(), +}).strict() + +export const UserAggregateArgsSchema: z.ZodType = z.object({ + where: UserWhereInputSchema.optional(), + orderBy: z.union([ UserOrderByWithRelationInputSchema.array(),UserOrderByWithRelationInputSchema ]).optional(), + cursor: UserWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const UserGroupByArgsSchema: z.ZodType = z.object({ + where: UserWhereInputSchema.optional(), + orderBy: z.union([ UserOrderByWithAggregationInputSchema.array(),UserOrderByWithAggregationInputSchema ]).optional(), + by: UserScalarFieldEnumSchema.array(), + having: UserScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const UserFindUniqueArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + where: UserWhereUniqueInputSchema, +}).strict() + +export const UserFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + where: UserWhereUniqueInputSchema, +}).strict() + +export const VerificationTokenFindFirstArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + where: VerificationTokenWhereInputSchema.optional(), + orderBy: z.union([ VerificationTokenOrderByWithRelationInputSchema.array(),VerificationTokenOrderByWithRelationInputSchema ]).optional(), + cursor: VerificationTokenWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: VerificationTokenScalarFieldEnumSchema.array().optional(), +}).strict() + +export const VerificationTokenFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + where: VerificationTokenWhereInputSchema.optional(), + orderBy: z.union([ VerificationTokenOrderByWithRelationInputSchema.array(),VerificationTokenOrderByWithRelationInputSchema ]).optional(), + cursor: VerificationTokenWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: VerificationTokenScalarFieldEnumSchema.array().optional(), +}).strict() + +export const VerificationTokenFindManyArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + where: VerificationTokenWhereInputSchema.optional(), + orderBy: z.union([ VerificationTokenOrderByWithRelationInputSchema.array(),VerificationTokenOrderByWithRelationInputSchema ]).optional(), + cursor: VerificationTokenWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: VerificationTokenScalarFieldEnumSchema.array().optional(), +}).strict() + +export const VerificationTokenAggregateArgsSchema: z.ZodType = z.object({ + where: VerificationTokenWhereInputSchema.optional(), + orderBy: z.union([ VerificationTokenOrderByWithRelationInputSchema.array(),VerificationTokenOrderByWithRelationInputSchema ]).optional(), + cursor: VerificationTokenWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const VerificationTokenGroupByArgsSchema: z.ZodType = z.object({ + where: VerificationTokenWhereInputSchema.optional(), + orderBy: z.union([ VerificationTokenOrderByWithAggregationInputSchema.array(),VerificationTokenOrderByWithAggregationInputSchema ]).optional(), + by: VerificationTokenScalarFieldEnumSchema.array(), + having: VerificationTokenScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const VerificationTokenFindUniqueArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + where: VerificationTokenWhereUniqueInputSchema, +}).strict() + +export const VerificationTokenFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + where: VerificationTokenWhereUniqueInputSchema, +}).strict() + +export const GameFindFirstArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + where: GameWhereInputSchema.optional(), + orderBy: z.union([ GameOrderByWithRelationInputSchema.array(),GameOrderByWithRelationInputSchema ]).optional(), + cursor: GameWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: GameScalarFieldEnumSchema.array().optional(), +}).strict() + +export const GameFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + where: GameWhereInputSchema.optional(), + orderBy: z.union([ GameOrderByWithRelationInputSchema.array(),GameOrderByWithRelationInputSchema ]).optional(), + cursor: GameWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: GameScalarFieldEnumSchema.array().optional(), +}).strict() + +export const GameFindManyArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + where: GameWhereInputSchema.optional(), + orderBy: z.union([ GameOrderByWithRelationInputSchema.array(),GameOrderByWithRelationInputSchema ]).optional(), + cursor: GameWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: GameScalarFieldEnumSchema.array().optional(), +}).strict() + +export const GameAggregateArgsSchema: z.ZodType = z.object({ + where: GameWhereInputSchema.optional(), + orderBy: z.union([ GameOrderByWithRelationInputSchema.array(),GameOrderByWithRelationInputSchema ]).optional(), + cursor: GameWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const GameGroupByArgsSchema: z.ZodType = z.object({ + where: GameWhereInputSchema.optional(), + orderBy: z.union([ GameOrderByWithAggregationInputSchema.array(),GameOrderByWithAggregationInputSchema ]).optional(), + by: GameScalarFieldEnumSchema.array(), + having: GameScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const GameFindUniqueArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + where: GameWhereUniqueInputSchema, +}).strict() + +export const GameFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + where: GameWhereUniqueInputSchema, +}).strict() + +export const GamepinFindFirstArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + where: GamepinWhereInputSchema.optional(), + orderBy: z.union([ GamepinOrderByWithRelationInputSchema.array(),GamepinOrderByWithRelationInputSchema ]).optional(), + cursor: GamepinWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: GamepinScalarFieldEnumSchema.array().optional(), +}).strict() + +export const GamepinFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + where: GamepinWhereInputSchema.optional(), + orderBy: z.union([ GamepinOrderByWithRelationInputSchema.array(),GamepinOrderByWithRelationInputSchema ]).optional(), + cursor: GamepinWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: GamepinScalarFieldEnumSchema.array().optional(), +}).strict() + +export const GamepinFindManyArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + where: GamepinWhereInputSchema.optional(), + orderBy: z.union([ GamepinOrderByWithRelationInputSchema.array(),GamepinOrderByWithRelationInputSchema ]).optional(), + cursor: GamepinWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: GamepinScalarFieldEnumSchema.array().optional(), +}).strict() + +export const GamepinAggregateArgsSchema: z.ZodType = z.object({ + where: GamepinWhereInputSchema.optional(), + orderBy: z.union([ GamepinOrderByWithRelationInputSchema.array(),GamepinOrderByWithRelationInputSchema ]).optional(), + cursor: GamepinWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const GamepinGroupByArgsSchema: z.ZodType = z.object({ + where: GamepinWhereInputSchema.optional(), + orderBy: z.union([ GamepinOrderByWithAggregationInputSchema.array(),GamepinOrderByWithAggregationInputSchema ]).optional(), + by: GamepinScalarFieldEnumSchema.array(), + having: GamepinScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const GamepinFindUniqueArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + where: GamepinWhereUniqueInputSchema, +}).strict() + +export const GamepinFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + where: GamepinWhereUniqueInputSchema, +}).strict() + +export const User_GameFindFirstArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + where: User_GameWhereInputSchema.optional(), + orderBy: z.union([ User_GameOrderByWithRelationInputSchema.array(),User_GameOrderByWithRelationInputSchema ]).optional(), + cursor: User_GameWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: User_GameScalarFieldEnumSchema.array().optional(), +}).strict() + +export const User_GameFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + where: User_GameWhereInputSchema.optional(), + orderBy: z.union([ User_GameOrderByWithRelationInputSchema.array(),User_GameOrderByWithRelationInputSchema ]).optional(), + cursor: User_GameWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: User_GameScalarFieldEnumSchema.array().optional(), +}).strict() + +export const User_GameFindManyArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + where: User_GameWhereInputSchema.optional(), + orderBy: z.union([ User_GameOrderByWithRelationInputSchema.array(),User_GameOrderByWithRelationInputSchema ]).optional(), + cursor: User_GameWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: User_GameScalarFieldEnumSchema.array().optional(), +}).strict() + +export const User_GameAggregateArgsSchema: z.ZodType = z.object({ + where: User_GameWhereInputSchema.optional(), + orderBy: z.union([ User_GameOrderByWithRelationInputSchema.array(),User_GameOrderByWithRelationInputSchema ]).optional(), + cursor: User_GameWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const User_GameGroupByArgsSchema: z.ZodType = z.object({ + where: User_GameWhereInputSchema.optional(), + orderBy: z.union([ User_GameOrderByWithAggregationInputSchema.array(),User_GameOrderByWithAggregationInputSchema ]).optional(), + by: User_GameScalarFieldEnumSchema.array(), + having: User_GameScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const User_GameFindUniqueArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + where: User_GameWhereUniqueInputSchema, +}).strict() + +export const User_GameFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + where: User_GameWhereUniqueInputSchema, +}).strict() + +export const MoveFindFirstArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + where: MoveWhereInputSchema.optional(), + orderBy: z.union([ MoveOrderByWithRelationInputSchema.array(),MoveOrderByWithRelationInputSchema ]).optional(), + cursor: MoveWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: MoveScalarFieldEnumSchema.array().optional(), +}).strict() + +export const MoveFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + where: MoveWhereInputSchema.optional(), + orderBy: z.union([ MoveOrderByWithRelationInputSchema.array(),MoveOrderByWithRelationInputSchema ]).optional(), + cursor: MoveWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: MoveScalarFieldEnumSchema.array().optional(), +}).strict() + +export const MoveFindManyArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + where: MoveWhereInputSchema.optional(), + orderBy: z.union([ MoveOrderByWithRelationInputSchema.array(),MoveOrderByWithRelationInputSchema ]).optional(), + cursor: MoveWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: MoveScalarFieldEnumSchema.array().optional(), +}).strict() + +export const MoveAggregateArgsSchema: z.ZodType = z.object({ + where: MoveWhereInputSchema.optional(), + orderBy: z.union([ MoveOrderByWithRelationInputSchema.array(),MoveOrderByWithRelationInputSchema ]).optional(), + cursor: MoveWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const MoveGroupByArgsSchema: z.ZodType = z.object({ + where: MoveWhereInputSchema.optional(), + orderBy: z.union([ MoveOrderByWithAggregationInputSchema.array(),MoveOrderByWithAggregationInputSchema ]).optional(), + by: MoveScalarFieldEnumSchema.array(), + having: MoveScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const MoveFindUniqueArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + where: MoveWhereUniqueInputSchema, +}).strict() + +export const MoveFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + where: MoveWhereUniqueInputSchema, +}).strict() + +export const ChatFindFirstArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + where: ChatWhereInputSchema.optional(), + orderBy: z.union([ ChatOrderByWithRelationInputSchema.array(),ChatOrderByWithRelationInputSchema ]).optional(), + cursor: ChatWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: ChatScalarFieldEnumSchema.array().optional(), +}).strict() + +export const ChatFindFirstOrThrowArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + where: ChatWhereInputSchema.optional(), + orderBy: z.union([ ChatOrderByWithRelationInputSchema.array(),ChatOrderByWithRelationInputSchema ]).optional(), + cursor: ChatWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: ChatScalarFieldEnumSchema.array().optional(), +}).strict() + +export const ChatFindManyArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + where: ChatWhereInputSchema.optional(), + orderBy: z.union([ ChatOrderByWithRelationInputSchema.array(),ChatOrderByWithRelationInputSchema ]).optional(), + cursor: ChatWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), + distinct: ChatScalarFieldEnumSchema.array().optional(), +}).strict() + +export const ChatAggregateArgsSchema: z.ZodType = z.object({ + where: ChatWhereInputSchema.optional(), + orderBy: z.union([ ChatOrderByWithRelationInputSchema.array(),ChatOrderByWithRelationInputSchema ]).optional(), + cursor: ChatWhereUniqueInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const ChatGroupByArgsSchema: z.ZodType = z.object({ + where: ChatWhereInputSchema.optional(), + orderBy: z.union([ ChatOrderByWithAggregationInputSchema.array(),ChatOrderByWithAggregationInputSchema ]).optional(), + by: ChatScalarFieldEnumSchema.array(), + having: ChatScalarWhereWithAggregatesInputSchema.optional(), + take: z.number().optional(), + skip: z.number().optional(), +}).strict() + +export const ChatFindUniqueArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + where: ChatWhereUniqueInputSchema, +}).strict() + +export const ChatFindUniqueOrThrowArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + where: ChatWhereUniqueInputSchema, +}).strict() + +export const AccountCreateArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + data: z.union([ AccountCreateInputSchema,AccountUncheckedCreateInputSchema ]), +}).strict() + +export const AccountUpsertArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + where: AccountWhereUniqueInputSchema, + create: z.union([ AccountCreateInputSchema,AccountUncheckedCreateInputSchema ]), + update: z.union([ AccountUpdateInputSchema,AccountUncheckedUpdateInputSchema ]), +}).strict() + +export const AccountCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ AccountCreateManyInputSchema,AccountCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const AccountDeleteArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + where: AccountWhereUniqueInputSchema, +}).strict() + +export const AccountUpdateArgsSchema: z.ZodType = z.object({ + select: AccountSelectSchema.optional(), + include: AccountIncludeSchema.optional(), + data: z.union([ AccountUpdateInputSchema,AccountUncheckedUpdateInputSchema ]), + where: AccountWhereUniqueInputSchema, +}).strict() + +export const AccountUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ AccountUpdateManyMutationInputSchema,AccountUncheckedUpdateManyInputSchema ]), + where: AccountWhereInputSchema.optional(), +}).strict() + +export const AccountDeleteManyArgsSchema: z.ZodType = z.object({ + where: AccountWhereInputSchema.optional(), +}).strict() + +export const SessionCreateArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + data: z.union([ SessionCreateInputSchema,SessionUncheckedCreateInputSchema ]), +}).strict() + +export const SessionUpsertArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + where: SessionWhereUniqueInputSchema, + create: z.union([ SessionCreateInputSchema,SessionUncheckedCreateInputSchema ]), + update: z.union([ SessionUpdateInputSchema,SessionUncheckedUpdateInputSchema ]), +}).strict() + +export const SessionCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ SessionCreateManyInputSchema,SessionCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const SessionDeleteArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + where: SessionWhereUniqueInputSchema, +}).strict() + +export const SessionUpdateArgsSchema: z.ZodType = z.object({ + select: SessionSelectSchema.optional(), + include: SessionIncludeSchema.optional(), + data: z.union([ SessionUpdateInputSchema,SessionUncheckedUpdateInputSchema ]), + where: SessionWhereUniqueInputSchema, +}).strict() + +export const SessionUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ SessionUpdateManyMutationInputSchema,SessionUncheckedUpdateManyInputSchema ]), + where: SessionWhereInputSchema.optional(), +}).strict() + +export const SessionDeleteManyArgsSchema: z.ZodType = z.object({ + where: SessionWhereInputSchema.optional(), +}).strict() + +export const UserCreateArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + data: z.union([ UserCreateInputSchema,UserUncheckedCreateInputSchema ]), +}).strict() + +export const UserUpsertArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + where: UserWhereUniqueInputSchema, + create: z.union([ UserCreateInputSchema,UserUncheckedCreateInputSchema ]), + update: z.union([ UserUpdateInputSchema,UserUncheckedUpdateInputSchema ]), +}).strict() + +export const UserCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ UserCreateManyInputSchema,UserCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const UserDeleteArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + where: UserWhereUniqueInputSchema, +}).strict() + +export const UserUpdateArgsSchema: z.ZodType = z.object({ + select: UserSelectSchema.optional(), + include: UserIncludeSchema.optional(), + data: z.union([ UserUpdateInputSchema,UserUncheckedUpdateInputSchema ]), + where: UserWhereUniqueInputSchema, +}).strict() + +export const UserUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ UserUpdateManyMutationInputSchema,UserUncheckedUpdateManyInputSchema ]), + where: UserWhereInputSchema.optional(), +}).strict() + +export const UserDeleteManyArgsSchema: z.ZodType = z.object({ + where: UserWhereInputSchema.optional(), +}).strict() + +export const VerificationTokenCreateArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + data: z.union([ VerificationTokenCreateInputSchema,VerificationTokenUncheckedCreateInputSchema ]), +}).strict() + +export const VerificationTokenUpsertArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + where: VerificationTokenWhereUniqueInputSchema, + create: z.union([ VerificationTokenCreateInputSchema,VerificationTokenUncheckedCreateInputSchema ]), + update: z.union([ VerificationTokenUpdateInputSchema,VerificationTokenUncheckedUpdateInputSchema ]), +}).strict() + +export const VerificationTokenCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ VerificationTokenCreateManyInputSchema,VerificationTokenCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const VerificationTokenDeleteArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + where: VerificationTokenWhereUniqueInputSchema, +}).strict() + +export const VerificationTokenUpdateArgsSchema: z.ZodType = z.object({ + select: VerificationTokenSelectSchema.optional(), + data: z.union([ VerificationTokenUpdateInputSchema,VerificationTokenUncheckedUpdateInputSchema ]), + where: VerificationTokenWhereUniqueInputSchema, +}).strict() + +export const VerificationTokenUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ VerificationTokenUpdateManyMutationInputSchema,VerificationTokenUncheckedUpdateManyInputSchema ]), + where: VerificationTokenWhereInputSchema.optional(), +}).strict() + +export const VerificationTokenDeleteManyArgsSchema: z.ZodType = z.object({ + where: VerificationTokenWhereInputSchema.optional(), +}).strict() + +export const GameCreateArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + data: z.union([ GameCreateInputSchema,GameUncheckedCreateInputSchema ]), +}).strict() + +export const GameUpsertArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + where: GameWhereUniqueInputSchema, + create: z.union([ GameCreateInputSchema,GameUncheckedCreateInputSchema ]), + update: z.union([ GameUpdateInputSchema,GameUncheckedUpdateInputSchema ]), +}).strict() + +export const GameCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ GameCreateManyInputSchema,GameCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const GameDeleteArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + where: GameWhereUniqueInputSchema, +}).strict() + +export const GameUpdateArgsSchema: z.ZodType = z.object({ + select: GameSelectSchema.optional(), + include: GameIncludeSchema.optional(), + data: z.union([ GameUpdateInputSchema,GameUncheckedUpdateInputSchema ]), + where: GameWhereUniqueInputSchema, +}).strict() + +export const GameUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ GameUpdateManyMutationInputSchema,GameUncheckedUpdateManyInputSchema ]), + where: GameWhereInputSchema.optional(), +}).strict() + +export const GameDeleteManyArgsSchema: z.ZodType = z.object({ + where: GameWhereInputSchema.optional(), +}).strict() + +export const GamepinCreateArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + data: z.union([ GamepinCreateInputSchema,GamepinUncheckedCreateInputSchema ]), +}).strict() + +export const GamepinUpsertArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + where: GamepinWhereUniqueInputSchema, + create: z.union([ GamepinCreateInputSchema,GamepinUncheckedCreateInputSchema ]), + update: z.union([ GamepinUpdateInputSchema,GamepinUncheckedUpdateInputSchema ]), +}).strict() + +export const GamepinCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ GamepinCreateManyInputSchema,GamepinCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const GamepinDeleteArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + where: GamepinWhereUniqueInputSchema, +}).strict() + +export const GamepinUpdateArgsSchema: z.ZodType = z.object({ + select: GamepinSelectSchema.optional(), + include: GamepinIncludeSchema.optional(), + data: z.union([ GamepinUpdateInputSchema,GamepinUncheckedUpdateInputSchema ]), + where: GamepinWhereUniqueInputSchema, +}).strict() + +export const GamepinUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ GamepinUpdateManyMutationInputSchema,GamepinUncheckedUpdateManyInputSchema ]), + where: GamepinWhereInputSchema.optional(), +}).strict() + +export const GamepinDeleteManyArgsSchema: z.ZodType = z.object({ + where: GamepinWhereInputSchema.optional(), +}).strict() + +export const User_GameCreateArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + data: z.union([ User_GameCreateInputSchema,User_GameUncheckedCreateInputSchema ]), +}).strict() + +export const User_GameUpsertArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + where: User_GameWhereUniqueInputSchema, + create: z.union([ User_GameCreateInputSchema,User_GameUncheckedCreateInputSchema ]), + update: z.union([ User_GameUpdateInputSchema,User_GameUncheckedUpdateInputSchema ]), +}).strict() + +export const User_GameCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ User_GameCreateManyInputSchema,User_GameCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const User_GameDeleteArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + where: User_GameWhereUniqueInputSchema, +}).strict() + +export const User_GameUpdateArgsSchema: z.ZodType = z.object({ + select: User_GameSelectSchema.optional(), + include: User_GameIncludeSchema.optional(), + data: z.union([ User_GameUpdateInputSchema,User_GameUncheckedUpdateInputSchema ]), + where: User_GameWhereUniqueInputSchema, +}).strict() + +export const User_GameUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ User_GameUpdateManyMutationInputSchema,User_GameUncheckedUpdateManyInputSchema ]), + where: User_GameWhereInputSchema.optional(), +}).strict() + +export const User_GameDeleteManyArgsSchema: z.ZodType = z.object({ + where: User_GameWhereInputSchema.optional(), +}).strict() + +export const MoveCreateArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + data: z.union([ MoveCreateInputSchema,MoveUncheckedCreateInputSchema ]), +}).strict() + +export const MoveUpsertArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + where: MoveWhereUniqueInputSchema, + create: z.union([ MoveCreateInputSchema,MoveUncheckedCreateInputSchema ]), + update: z.union([ MoveUpdateInputSchema,MoveUncheckedUpdateInputSchema ]), +}).strict() + +export const MoveCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ MoveCreateManyInputSchema,MoveCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const MoveDeleteArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + where: MoveWhereUniqueInputSchema, +}).strict() + +export const MoveUpdateArgsSchema: z.ZodType = z.object({ + select: MoveSelectSchema.optional(), + include: MoveIncludeSchema.optional(), + data: z.union([ MoveUpdateInputSchema,MoveUncheckedUpdateInputSchema ]), + where: MoveWhereUniqueInputSchema, +}).strict() + +export const MoveUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ MoveUpdateManyMutationInputSchema,MoveUncheckedUpdateManyInputSchema ]), + where: MoveWhereInputSchema.optional(), +}).strict() + +export const MoveDeleteManyArgsSchema: z.ZodType = z.object({ + where: MoveWhereInputSchema.optional(), +}).strict() + +export const ChatCreateArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + data: z.union([ ChatCreateInputSchema,ChatUncheckedCreateInputSchema ]), +}).strict() + +export const ChatUpsertArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + where: ChatWhereUniqueInputSchema, + create: z.union([ ChatCreateInputSchema,ChatUncheckedCreateInputSchema ]), + update: z.union([ ChatUpdateInputSchema,ChatUncheckedUpdateInputSchema ]), +}).strict() + +export const ChatCreateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ ChatCreateManyInputSchema,ChatCreateManyInputSchema.array() ]), + skipDuplicates: z.boolean().optional(), +}).strict() + +export const ChatDeleteArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + where: ChatWhereUniqueInputSchema, +}).strict() + +export const ChatUpdateArgsSchema: z.ZodType = z.object({ + select: ChatSelectSchema.optional(), + include: ChatIncludeSchema.optional(), + data: z.union([ ChatUpdateInputSchema,ChatUncheckedUpdateInputSchema ]), + where: ChatWhereUniqueInputSchema, +}).strict() + +export const ChatUpdateManyArgsSchema: z.ZodType = z.object({ + data: z.union([ ChatUpdateManyMutationInputSchema,ChatUncheckedUpdateManyInputSchema ]), + where: ChatWhereInputSchema.optional(), +}).strict() + +export const ChatDeleteManyArgsSchema: z.ZodType = z.object({ + where: ChatWhereInputSchema.optional(), +}).strict() \ No newline at end of file diff --git a/leaky-ships/prisma/schema.prisma b/leaky-ships/prisma/schema.prisma index ac8f763..98c1c1a 100644 --- a/leaky-ships/prisma/schema.prisma +++ b/leaky-ships/prisma/schema.prisma @@ -1,78 +1,130 @@ +generator zod { + provider = "zod-prisma-types" +} + generator client { provider = "prisma-client-js" } datasource db { - provider = "mongodb" + provider = "mysql" url = env("DATABASE_URL") } -model Player { - id String @id @default(auto()) @map("_id") @db.ObjectId - uuid String @unique @default(uuid()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - anonymous Boolean @default(true) - username String @unique @default("") - email String @unique @default("") - passwordHash String @unique @default("") - games Game[] @relation(fields: [gameIds], references: [id]) - gameIds String[] @db.ObjectId - tokens Token[] +model Account { + id String @id @default(cuid()) + userId String @map("user_id") + type String + provider String + providerAccountId String @map("provider_account_id") + refresh_token String? @db.Text + access_token String? @db.Text + expires_at Int? + ext_expires_in Int? + token_type String? + scope String? + id_token String? @db.Text + session_state String? + oauth_token_secret String? + oauth_token String? + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([provider, providerAccountId]) + @@map("accounts") } -enum TokenType { - REFRESH - ACCESS +model Session { + id String @id @default(cuid()) + sessionToken String @unique @map("session_token") + userId String @map("user_id") + expires DateTime + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@map("sessions") } -model Token { - id String @id @default(auto()) @map("_id") @db.ObjectId - createdAt DateTime @default(now()) - expires DateTime @updatedAt - owner Player @relation(fields: [ownerId], references: [id]) - ownerId String @db.ObjectId - token String @unique - type TokenType - used Boolean @default(false) +model User { + id String @id @default(cuid()) + name String? + email String? @unique + emailVerified DateTime? @map("email_verified") + image String? @db.Text + createdAt DateTime @default(now()) @map(name: "created_at") + updatedAt DateTime @updatedAt @map(name: "updated_at") + games User_Game[] + accounts Account[] + sessions Session[] + + @@map(name: "users") +} + +model VerificationToken { + identifier String + token String @unique + expires DateTime + + @@unique([identifier, token]) + @@map("verificationtokens") +} + +enum GameState { + launching + running + ended } model Game { - id String @id @default(auto()) @map("_id") @db.ObjectId - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - players Player[] @relation(fields: [playerIds], references: [id]) - playerIds String[] @db.ObjectId - running Boolean @default(true) - Move Move[] - Gamepin Gamepin[] - Chat Chat[] -} - -model Move { - id String @id @default(auto()) @map("_id") @db.ObjectId - createdAt DateTime @default(now()) - // updatedAt DateTime @updatedAt - index Int - game Game @relation(fields: [gameId], references: [id]) - gameId String @db.ObjectId + id String @id @default(cuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + state GameState @default(launching) + allowSpectators Boolean @default(true) + allowSpecials Boolean @default(true) + allowChat Boolean @default(true) + allowMarkDraw Boolean @default(true) + gamePin Gamepin? + users User_Game[] } model Gamepin { - id String @id @default(auto()) @map("_id") @db.ObjectId + id String @id @default(cuid()) createdAt DateTime @default(now()) - // updatedAt DateTime @updatedAt - pin Int @unique - game Game @relation(fields: [gameId], references: [id]) - gameId String @db.ObjectId + pin String @unique + gameId String @unique + game Game @relation(fields: [gameId], references: [id], onDelete: Cascade) +} + +model User_Game { + id String @id @default(cuid()) + createdAt DateTime @default(now()) + gameId String + userId String + index Int + moves Move[] + chats Chat[] + game Game @relation(fields: [gameId], references: [id], onDelete: Cascade) + user User @relation(fields: [userId], references: [id]) + + @@unique([gameId, index]) + @@unique([gameId, userId]) +} + +model Move { + id String @id @default(cuid()) + createdAt DateTime @default(now()) + index Int + user_game_id String + user_game User_Game @relation(fields: [user_game_id], references: [id], onDelete: Cascade) + + @@unique([user_game_id, index]) } model Chat { - id String @id @default(auto()) @map("_id") @db.ObjectId - createdAt DateTime @default(now()) - // updatedAt DateTime @updatedAt - message String @default("") - event String @default("") - game Game @relation(fields: [gameId], references: [id]) - gameId String @db.ObjectId + id String @id @default(cuid()) + createdAt DateTime @default(now()) + message String? + event String? + user_game_id String + user_game User_Game @relation(fields: [user_game_id], references: [id], onDelete: Cascade) } diff --git a/leaky-ships/public/assets/shield.png b/leaky-ships/public/assets/shield.png deleted file mode 100644 index 5f513fd..0000000 Binary files a/leaky-ships/public/assets/shield.png and /dev/null differ diff --git a/leaky-ships/public/images/wallpaper.jpg b/leaky-ships/public/images/wallpaper.jpg new file mode 100644 index 0000000..9a6e72d Binary files /dev/null and b/leaky-ships/public/images/wallpaper.jpg differ diff --git a/leaky-ships/styles/App.scss b/leaky-ships/styles/App.scss index e162bf7..463201b 100644 --- a/leaky-ships/styles/App.scss +++ b/leaky-ships/styles/App.scss @@ -71,6 +71,7 @@ body { justify-items: center; grid-template-rows: 0.75fr repeat(12, 1fr) 0.75fr; grid-template-columns: 0.75fr repeat(12, 1fr) 0.75fr; + overflow: hidden; > .label { grid-column: var(--x); @@ -197,7 +198,7 @@ body { } &.preview { - --color: lawngreen; + --color: forestgreen; background-color: #0001; // border: 5px dashed var(--color); } @@ -274,21 +275,70 @@ body { width: inherit; pointer-events: none; - &.left { + &:not(.middle) { grid-area: 1 / 1 / -1 / -1; + transform-origin: 324px 0; align-self: flex-start; - transform: rotate(180deg); + margin-top: 324px; + opacity: 1; + } + + &.left { + transform: rotate(90deg); + animation: floatInl 3s ease-out; + @keyframes floatInl { + from { + transform: scale(2) rotate(90deg); + margin-left: -324px; + opacity: 0; + } + } } &.right { - grid-area: 1 / 1 / -1 / -1; - align-self: flex-end; + transform: rotate(270deg); + animation: floatInr 3s ease-out; + @keyframes floatInr { + from { + transform: scale(2) rotate(270deg); + margin-left: 324px; + opacity: 0; + } + } + } + &.top { + animation: floatInt 3s ease-out; + @keyframes floatInt { + from { + transform: scale(2); + margin-top: 648px; + opacity: 0; + } + } + } + + &.bottom { + transform: rotate(180deg); + animation: floatInb 3s ease-out; + @keyframes floatInb { + from { + transform: scale(2) rotate(180deg); + margin-top: 0; + opacity: 0; + } + } } &.middle { grid-area: 4 / 4 / -4 / -4; } } + + canvas { + grid-area: 1 / 1 / -1 / -1; + border: 1px solid #000; + display: absolute; + } } .event-bar { @@ -304,6 +354,22 @@ body { width: 128px; .container { + width: initial; + position: relative; + + &.amount::after { + content: var(--amount); + position: absolute; + top: -8px; + right: -16px; + color: black; + background-color: white; + border: 1px solid black; + border-radius: 8px; + font-size: 16px; + padding: 2px 8px; + } + img { width: 64px; padding: 8px; @@ -311,23 +377,6 @@ body { background-color: white; border-radius: 1rem; } - - &.amount { - position: relative; - - &::after { - content: var(--amount); - position: absolute; - top: -6px; - right: -6px; - color: black; - background-color: white; - border: 1px solid black; - border-radius: 8px; - font-size: 16px; - padding: 2px 8px; - } - } } span { diff --git a/leaky-ships/styles/globals.css b/leaky-ships/styles/globals.css deleted file mode 100644 index cd7766b..0000000 --- a/leaky-ships/styles/globals.css +++ /dev/null @@ -1,23 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@import url("https://fonts.googleapis.com/css2?family=Farro:wght@300;400;500;700&display=swap"); -@font-face { - font-family: "CP_Font"; - src: url("/fonts/cpfont_ote/CP Font.otf") format("opentype"); -} - -.pixelart { - image-rendering: pixelated; - image-rendering: -moz-crisp-edges; - image-rendering: crisp-edges; -} - -.font-farro { - font-family: "Farro", sans-serif; -} - -.font-checkpoint { - font-family: "CP_Font", sans-serif; -} diff --git a/leaky-ships/styles/globals.scss b/leaky-ships/styles/globals.scss new file mode 100644 index 0000000..25b3d11 --- /dev/null +++ b/leaky-ships/styles/globals.scss @@ -0,0 +1,65 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@import url("https://fonts.googleapis.com/css2?family=Farro:wght@300;400;500;700&display=swap"); +@font-face { + font-family: "CP_Font"; + src: url("/fonts/cpfont_ote/CP Font.otf") format("opentype"); +} + +.pixelart { + image-rendering: pixelated; + image-rendering: -moz-crisp-edges; + image-rendering: crisp-edges; +} + +.font-farro { + font-family: "Farro", sans-serif; +} + +.font-checkpoint { + font-family: "CP_Font", sans-serif; +} + +button { + cursor: none; +} + +#toast-confirm { + button { + margin: 0 1rem; + padding: 0 1rem; + border: 2px solid gray; + border-radius: 0.5rem; + } +} + +.inputStyle { + width: 3rem !important; + height: 3rem; + margin: 0 1rem; + font-size: 2rem; + border-radius: 4px; + border: 1px solid #b1b2b5cc; +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + margin: 0; +} + +input[type="number"] { + -webkit-appearance: textfield; + -moz-appearance: textfield; + appearance: textfield; +} + +@media (pointer: fine) { + button { + cursor: pointer; + } +} diff --git a/leaky-ships/styles/homepage.scss b/leaky-ships/styles/homepage.scss deleted file mode 100644 index d54cc1d..0000000 --- a/leaky-ships/styles/homepage.scss +++ /dev/null @@ -1,330 +0,0 @@ -@use "./mixins/display" as *; -@use "./mixins/effects" as *; -@use "./mixins/CP_Font" as *; -@import "./mixins/variables"; - -@import url("https://fonts.googleapis.com/css2?family=Farro:wght@300;400;500;700&display=swap"); - -#box { - min-height: 100%; - background-color: #282c34; - @include flex-col; - align-items: center; - justify-content: space-around; - - #navExpand { - @include flex; - align-items: center; - justify-content: center; - position: absolute; - top: 64px; - left: 64px; - width: 96px; - height: 96px; - background-color: $grayish; - border-radius: 8px; - box-shadow: 0 0 2px 2px #0008 inset; - - #burgerMenu { - @include pixelart; - height: 84px; - width: 84px; - } - } - - #shield { - @include flex-row; - justify-content: center; - height: 250px; - width: 700px; - background-image: url("/assets/shield.png"); - background-repeat: no-repeat; - background-size: contain; - - #width { - @include flex-col; - justify-content: space-between; - - h1 { - @include CP_Font; - margin: 3%; - width: 100%; - text-align: center; - font-size: 5.8em; - letter-spacing: 6px; - - &:first-child { - border-top: 5px solid black; - } - - &:last-child { - border-bottom: 5px solid black; - } - } - } - } - - #videoWrapper { - position: relative; - display: flex; - align-items: center; - justify-content: center; - height: 350px; - width: 700px; - background-color: #2227; - border: 4px solid black; - border-radius: 8px; - - svg { - font-size: 6em; - color: #231f20; - - path { - stroke: black; - stroke-width: 2px; - stroke-linejoin: round; - } - } - } - - #startButton { - font-family: "Farro", sans-serif; - font-weight: bold; - font-size: 3em; - color: black; - background-color: $warn; - border: none; - border-radius: 8px; - padding: calc(2rem + 8px) 6rem 2rem 6rem; - } - - #startBox { - display: flex; - flex-direction: column; - align-items: center; - background-color: $grayish; - box-shadow: 0 0 2px 2px #fffb inset, 0 0 2px 2px #fff2; - border: 4px solid black; - padding: 3rem; - border-radius: 8px; - min-width: 60vw; - gap: 2rem; - - #back { - font-size: 3em; - color: $grayish; - align-self: flex-start; - background-color: #000c; - border: none; - border-radius: 8px; - padding: 0 0.5rem; - margin-top: -1.5rem; - width: 10rem; - box-shadow: 0 0 2px 2px #fff6 inset; - border: 2px solid #000c; - } - - #sameWidth { - display: flex; - flex-direction: column; - align-items: center; - gap: 3rem; - - .optionButton { - @include flex-row; - justify-content: space-between; - align-items: center; - font-size: 2.5em; - color: $grayish; - background-color: #000c; - border: none; - border-radius: 8px; - padding: 1rem 2rem 1rem 4rem; - width: 100%; - box-shadow: 0 0 2px 2px #fff6 inset; - border: 2px solid #000c; - - &:last-child { - margin-top: 2rem; - } - - span { - margin: 0 auto; - } - - svg { - margin-left: 3rem; - font-size: 2em; - width: 2.5rem; - height: inherit; - } - } - } - } -} - -@media (max-width: 2000px) { - #box { - #shield { - height: 200px; - width: 560px; - - #width { - h1 { - font-size: 4.5em; - letter-spacing: 4px; - - &:first-child { - border-top: 4px solid black; - } - - &:last-child { - border-bottom: 4px solid black; - } - } - } - } - } -} - -@media (max-width: 1000px) { - #box { - #navExpand { - top: 32px; - left: 32px; - width: 80px; - height: 80px; - - #burgerMenu { - height: 64px; - width: 64px; - } - } - - #shield { - height: 160px; - width: 450px; - - #width { - h1 { - font-size: 3.6em; - letter-spacing: 3px; - - &:first-child { - border-top: 3px solid black; - } - - &:last-child { - border-bottom: 3px solid black; - } - } - } - } - - #videoWrapper { - height: 300px; - width: 600px; - } - } -} - -@media (max-width: 700px) { - #box { - justify-content: space-evenly; - - #navExpand { - top: 16px; - left: 16px; - width: 64px; - height: 64px; - - #burgerMenu { - height: 44px; - width: 44px; - } - } - - #shield { - height: 100px; - width: 280px; - - #width { - h1 { - font-size: 2.2em; - letter-spacing: 2px; - - &:first-child { - border-top: 2px solid black; - } - - &:last-child { - border-bottom: 2px solid black; - } - } - } - } - - #videoWrapper { - height: 250px; - width: 450px; - - svg { - font-size: 4em; - } - } - - #startButton { - font-size: 2em; - padding: calc(1rem + 8px) 3rem 1rem 3rem; - } - - #startBox { - max-width: 90vw; - padding: 2rem; - - #back { - margin-top: -1rem; - font-size: 2em; - width: 7rem; - padding: 0.125rem; - } - - #sameWidth { - max-width: 100%; - - .optionButton { - font-size: 2em; - padding: 1rem 2rem; - - svg { - margin-left: 2rem; - font-size: 1.5em; - width: 2rem; - } - } - } - } - } -} - -@media (max-width: 500px) { - #box { - #videoWrapper { - height: 150px; - width: 300px; - } - - #startBox { - #sameWidth { - .optionButton { - font-size: 1.5em; - - svg { - margin-left: 1rem; - font-size: 1em; - } - } - } - } - } -} diff --git a/leaky-ships/styles/mixins/CP_Font.scss b/leaky-ships/styles/mixins/CP_Font.scss deleted file mode 100644 index cefb5a9..0000000 --- a/leaky-ships/styles/mixins/CP_Font.scss +++ /dev/null @@ -1,8 +0,0 @@ -@font-face { - font-family: "CP_Font"; - src: url("/fonts/cpfont_ote/CP Font.otf") format("opentype"); -} - -@mixin CP_Font { - font-family: "CP_Font", sans-serif; -} diff --git a/leaky-ships/tailwind.config.js b/leaky-ships/tailwind.config.js index 1859be0..b6af3bc 100644 --- a/leaky-ships/tailwind.config.js +++ b/leaky-ships/tailwind.config.js @@ -1,21 +1,4 @@ /** @type {import('tailwindcss').Config} */ -const allColors = require("tailwindcss/colors") - -const colors = Object.keys(allColors) - .filter((key) => { - const deprecated = [ - "lightBlue", - "warmGray", - "trueGray", - "coolGray", - "blueGray", - ] - return !deprecated.find((val) => val === key) - }) - .reduce((acc, key) => { - acc[key] = allColors[key] - return acc - }, {}) module.exports = { content: [ @@ -23,15 +6,16 @@ module.exports = { "./components/**/*.{js,ts,jsx,tsx}", ], theme: { - colors: { - ...colors, - theme: "#282c34", - grayish: "#b1b2b5cc", - warn: "#fabd04", - "shield-gray": "#616161", - "shield-lightgray": "#989898", + extend: { + colors: { + theme: "#282c34", + grayish: "#b1b2b5cc", + warn: "#fabd04", + voidDark: "#000c", + "shield-gray": "#616161", + "shield-lightgray": "#989898", + }, }, - extend: {}, }, plugins: [], } diff --git a/leaky-ships/tsconfig.json b/leaky-ships/tsconfig.json index 99710e8..55146cf 100644 --- a/leaky-ships/tsconfig.json +++ b/leaky-ships/tsconfig.json @@ -13,7 +13,13 @@ "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", - "incremental": true + "incremental": true, + "paths": { + "@lib/*": ["./lib/*"], + "@hooks/*": ["./hooks/*"], + "@components/*": ["./components/*"], + "@backend/*": ["./lib/backend/*"] + } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] diff --git a/leaky-ships/types/next-auth.d.ts b/leaky-ships/types/next-auth.d.ts new file mode 100644 index 0000000..1949d47 --- /dev/null +++ b/leaky-ships/types/next-auth.d.ts @@ -0,0 +1,12 @@ +import NextAuth, { DefaultSession } from "next-auth" + +declare module "next-auth" { + /** + * Returned by `useSession`, `getSession` and received as a prop on the `SessionProvider` React Context + */ + interface Session { + user: { + id: string + } & DefaultSession["user"] + } +}