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")}
+
+
+

+ {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 (
+

+ )
+}
+
+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 (
-
-
-
- {!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}
-
-
-

- {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 (
+
+ )
+
+ 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 (
+
+
+
+
+

+
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 (
+
+
+
+
+

+
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 (
+
+ )
+}
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