fixed dispatch eslint errors
This commit is contained in:
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -2,7 +2,7 @@
|
|||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"files.autoSave": "off",
|
"files.autoSave": "off",
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"eslint.workingDirectories": [{ "pattern": "./apps/*/" }, { "pattern": "./packages/*/" }],
|
"eslint.workingDirectories": [{ "mode": "auto" }],
|
||||||
"editor.codeActionsOnSave": ["source.formatDocument", "source.fixAll.eslint"],
|
"editor.codeActionsOnSave": ["source.formatDocument", "source.fixAll.eslint"],
|
||||||
"typescript.validate.enable": true,
|
"typescript.validate.enable": true,
|
||||||
"typescript.tsserver.experimental.enableProjectDiagnostics": true,
|
"typescript.tsserver.experimental.enableProjectDiagnostics": true,
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import { HpgState } from "@repo/db";
|
import { HpgState } from "@repo/db";
|
||||||
import { cn } from "@repo/shared-components";
|
import { cn } from "@repo/shared-components";
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
@@ -6,7 +7,6 @@ import { getConnectedAircraftsAPI } from "_querys/aircrafts";
|
|||||||
import { getStationsAPI } from "_querys/stations";
|
import { getStationsAPI } from "_querys/stations";
|
||||||
import { Ambulance, FireExtinguisher, Radio, Siren } from "lucide-react";
|
import { Ambulance, FireExtinguisher, Radio, Siren } from "lucide-react";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { FieldValues } from "react-hook-form";
|
|
||||||
|
|
||||||
type MissionStationsSelectProps = {
|
type MissionStationsSelectProps = {
|
||||||
selectedStations?: number[];
|
selectedStations?: number[];
|
||||||
@@ -54,7 +54,6 @@ export function StationsSelect({
|
|||||||
...(vehicleStates.hpgFireEngineState !== HpgState.NOT_REQUESTED || undefined ? ["FW"] : []),
|
...(vehicleStates.hpgFireEngineState !== HpgState.NOT_REQUESTED || undefined ? ["FW"] : []),
|
||||||
...(vehicleStates.hpgPoliceState !== HpgState.NOT_REQUESTED || undefined ? ["POL"] : []),
|
...(vehicleStates.hpgPoliceState !== HpgState.NOT_REQUESTED || undefined ? ["POL"] : []),
|
||||||
]);
|
]);
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
||||||
}, [selectedStations, vehicleStates]);
|
}, [selectedStations, vehicleStates]);
|
||||||
|
|
||||||
// Helper to check if a station is a vehicle and its state is NOT_REQUESTED
|
// Helper to check if a station is a vehicle and its state is NOT_REQUESTED
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
"use client";
|
"use client";
|
||||||
import { useSession } from "next-auth/react";
|
import { useSession } from "next-auth/react";
|
||||||
import { useDispatchConnectionStore } from "../../../../../_store/dispatch/connectionStore";
|
import { useDispatchConnectionStore } from "../../../../../_store/dispatch/connectionStore";
|
||||||
@@ -22,7 +23,6 @@ export const ConnectionBtn = () => {
|
|||||||
const [logoffDebounce, setLogoffDebounce] = useState<NodeJS.Timeout | null>(null);
|
const [logoffDebounce, setLogoffDebounce] = useState<NodeJS.Timeout | null>(null);
|
||||||
const session = useSession();
|
const session = useSession();
|
||||||
const uid = session.data?.user?.id;
|
const uid = session.data?.user?.id;
|
||||||
if (!uid) return null;
|
|
||||||
|
|
||||||
// useEffect für die Logoff-Zeit
|
// useEffect für die Logoff-Zeit
|
||||||
const [logoffHours, logoffMinutes] = form.logoffTime?.split(":").map(Number) || [];
|
const [logoffHours, logoffMinutes] = form.logoffTime?.split(":").map(Number) || [];
|
||||||
@@ -58,7 +58,7 @@ export const ConnectionBtn = () => {
|
|||||||
connection.disconnect();
|
connection.disconnect();
|
||||||
};
|
};
|
||||||
}, [connection.disconnect]);
|
}, [connection.disconnect]);
|
||||||
|
if (!uid) return null;
|
||||||
return (
|
return (
|
||||||
<div className="rounded-box bg-base-200 flex justify-center items-center gap-2 p-1">
|
<div className="rounded-box bg-base-200 flex justify-center items-center gap-2 p-1">
|
||||||
{connection.message.length > 0 && (
|
{connection.message.length > 0 && (
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
"use client";
|
"use client";
|
||||||
import React, { useEffect } from "react";
|
import React, { useEffect } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { zodResolver } from "@hookform/resolvers/zod";
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||||||
import { BellRing, BookmarkPlus, Radio } from "lucide-react";
|
import { BellRing, BookmarkPlus } from "lucide-react";
|
||||||
import { KEYWORD_CATEGORY, Mission, missionType, Prisma } from "@repo/db";
|
import { KEYWORD_CATEGORY, Mission, missionType, Prisma } from "@repo/db";
|
||||||
import {
|
import {
|
||||||
JsonValueType,
|
JsonValueType,
|
||||||
|
|||||||
@@ -26,7 +26,14 @@ export const Pannel = () => {
|
|||||||
setOpen(false);
|
setOpen(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [missions, setMissionFormValues, setEditingMission, setOpen, missionFormValues]);
|
}, [
|
||||||
|
missions,
|
||||||
|
setMissionFormValues,
|
||||||
|
setEditingMission,
|
||||||
|
setOpen,
|
||||||
|
missionFormValues,
|
||||||
|
editingMissionId,
|
||||||
|
]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={cn("flex-1 max-w-[600px] z-9999999")}>
|
<div className={cn("flex-1 max-w-[600px] z-9999999")}>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ConnectedAircraft, Prisma } from "@repo/db";
|
import { Prisma } from "@repo/db";
|
||||||
import { usePilotConnectionStore } from "_store/pilot/connectionStore";
|
import { usePilotConnectionStore } from "_store/pilot/connectionStore";
|
||||||
import { useMrtStore } from "_store/pilot/MrtStore";
|
import { useMrtStore } from "_store/pilot/MrtStore";
|
||||||
import { pilotSocket } from "(app)/pilot/socket";
|
import { pilotSocket } from "(app)/pilot/socket";
|
||||||
@@ -21,7 +21,7 @@ export const useButtons = () => {
|
|||||||
}) => editConnectedAircraftAPI(aircraftId, data),
|
}) => editConnectedAircraftAPI(aircraftId, data),
|
||||||
});
|
});
|
||||||
|
|
||||||
const { page, setPage } = useMrtStore((state) => state);
|
const { setPage } = useMrtStore((state) => state);
|
||||||
|
|
||||||
const handleButton =
|
const handleButton =
|
||||||
(button: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0" | "home") => () => {
|
(button: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0" | "home") => () => {
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import { editConnectedAircraftAPI, getConnectedAircraftsAPI } from "_querys/airc
|
|||||||
import { Prisma } from "@repo/db";
|
import { Prisma } from "@repo/db";
|
||||||
import { getNextDateWithTime } from "@repo/shared-components";
|
import { getNextDateWithTime } from "@repo/shared-components";
|
||||||
import { Select } from "_components/Select";
|
import { Select } from "_components/Select";
|
||||||
import { components } from "react-select";
|
|
||||||
import { Radio } from "lucide-react";
|
import { Radio } from "lucide-react";
|
||||||
|
|
||||||
export const ConnectionBtn = () => {
|
export const ConnectionBtn = () => {
|
||||||
@@ -54,7 +53,7 @@ export const ConnectionBtn = () => {
|
|||||||
return () => {
|
return () => {
|
||||||
connection.disconnect();
|
connection.disconnect();
|
||||||
};
|
};
|
||||||
}, [connection.disconnect]);
|
}, [connection, connection.disconnect]);
|
||||||
|
|
||||||
const [logoffHours, logoffMinutes] = form.logoffTime?.split(":").map(Number) || [];
|
const [logoffHours, logoffMinutes] = form.logoffTime?.split(":").map(Number) || [];
|
||||||
|
|
||||||
@@ -87,7 +86,7 @@ export const ConnectionBtn = () => {
|
|||||||
return () => {
|
return () => {
|
||||||
if (logoffDebounce) clearTimeout(logoffDebounce);
|
if (logoffDebounce) clearTimeout(logoffDebounce);
|
||||||
};
|
};
|
||||||
}, [logoffHours, logoffMinutes, connection.connectedAircraft]);
|
}, [logoffHours, logoffMinutes, connection.connectedAircraft, aircraftMutation, logoffDebounce]);
|
||||||
|
|
||||||
const session = useSession();
|
const session = useSession();
|
||||||
const uid = session.data?.user?.id;
|
const uid = session.data?.user?.id;
|
||||||
@@ -143,7 +142,9 @@ export const ConnectionBtn = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
value={form.selectedStationId ?? ""}
|
value={form.selectedStationId ?? ""}
|
||||||
formatOptionLabel={(option: any) => option.component}
|
formatOptionLabel={(option: unknown) =>
|
||||||
|
(option as { component: React.ReactNode }).component
|
||||||
|
}
|
||||||
options={
|
options={
|
||||||
stations?.map((station) => ({
|
stations?.map((station) => ({
|
||||||
value: station.id.toString(),
|
value: station.id.toString(),
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import dynamic from "next/dynamic";
|
|||||||
import { ConnectedDispatcher } from "tracker/_components/ConnectedDispatcher";
|
import { ConnectedDispatcher } from "tracker/_components/ConnectedDispatcher";
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
import { usePilotConnectionStore } from "_store/pilot/connectionStore";
|
import { usePilotConnectionStore } from "_store/pilot/connectionStore";
|
||||||
import { getAircraftsAPI, getConnectedAircraftsAPI } from "_querys/aircrafts";
|
import { getAircraftsAPI } from "_querys/aircrafts";
|
||||||
import { checkSimulatorConnected } from "@repo/shared-components";
|
import { checkSimulatorConnected } from "@repo/shared-components";
|
||||||
import { SimConnectionAlert } from "(app)/pilot/_components/SimConnectionAlert";
|
import { SimConnectionAlert } from "(app)/pilot/_components/SimConnectionAlert";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { NextPage } from "next";
|
import { NextPage } from "next";
|
||||||
import { ReactNode } from "react";
|
|
||||||
|
|
||||||
const AuthLayout: NextPage<
|
const AuthLayout: NextPage<
|
||||||
Readonly<{
|
Readonly<{
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export const Login = () => {
|
|||||||
if (status === "authenticated") {
|
if (status === "authenticated") {
|
||||||
navigate.push("/");
|
navigate.push("/");
|
||||||
}
|
}
|
||||||
}, [session, navigate]);
|
}, [session, navigate, status]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const signInWithCode = async () => {
|
const signInWithCode = async () => {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { useDebounce } from "_helpers/useDebounce";
|
import { useDebounce } from "@repo/shared-components";
|
||||||
import { useAudioStore } from "_store/audioStore";
|
import { useAudioStore } from "_store/audioStore";
|
||||||
import { useEffect, useRef, useState } from "react";
|
import { useEffect, useRef, useState } from "react";
|
||||||
|
|
||||||
@@ -112,5 +112,6 @@ export const useSounds = ({
|
|||||||
callToLong.current!.pause();
|
callToLong.current!.pause();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, [isTransmitting]);
|
}, [isTransmitting]);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ export const CustomErrorBoundary = ({ children }: { children?: React.ReactNode }
|
|||||||
let errorTest;
|
let errorTest;
|
||||||
let errorCode = 500;
|
let errorCode = 500;
|
||||||
if ("statusCode" in error) {
|
if ("statusCode" in error) {
|
||||||
errorCode = (error as any).statusCode;
|
errorCode = error.statusCode;
|
||||||
}
|
}
|
||||||
if ("message" in error || error instanceof Error) {
|
if ("message" in error || error instanceof Error) {
|
||||||
errorTest = (error as any).message;
|
errorTest = error.message;
|
||||||
} else if (typeof error === "string") {
|
} else if (typeof error === "string") {
|
||||||
errorTest = error;
|
errorTest = error;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { toast } from "react-hot-toast";
|
import { toast } from "react-hot-toast";
|
||||||
import { QueryClient, QueryClientProvider, useQuery } from "@tanstack/react-query";
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||||
import { ReactNode, useEffect, useState } from "react";
|
import { ReactNode, useEffect, useState } from "react";
|
||||||
import { dispatchSocket } from "(app)/dispatch/socket";
|
import { dispatchSocket } from "(app)/dispatch/socket";
|
||||||
import { Mission, NotificationPayload } from "@repo/db";
|
import { NotificationPayload } from "@repo/db";
|
||||||
import { HPGnotificationToast } from "_components/customToasts/HPGnotification";
|
import { HPGnotificationToast } from "_components/customToasts/HPGnotification";
|
||||||
import { useMapStore } from "_store/mapStore";
|
import { useMapStore } from "_store/mapStore";
|
||||||
import { AdminMessageToast } from "_components/customToasts/AdminMessage";
|
import { AdminMessageToast } from "_components/customToasts/AdminMessage";
|
||||||
@@ -30,7 +30,7 @@ export function QueryProvider({ children }: { children: ReactNode }) {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const invalidateMission = (mission: Mission) => {
|
const invalidateMission = () => {
|
||||||
queryClient.invalidateQueries({
|
queryClient.invalidateQueries({
|
||||||
queryKey: ["missions"],
|
queryKey: ["missions"],
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
"use client";
|
"use client";
|
||||||
import { FieldValues, Path } from "react-hook-form";
|
|
||||||
import SelectTemplate, { Props as SelectTemplateProps, StylesConfig } from "react-select";
|
import SelectTemplate, { Props as SelectTemplateProps, StylesConfig } from "react-select";
|
||||||
import { cn } from "@repo/shared-components";
|
import { cn } from "@repo/shared-components";
|
||||||
import dynamic from "next/dynamic";
|
import dynamic from "next/dynamic";
|
||||||
@@ -99,7 +99,7 @@ const SelectCom = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const SelectWrapper = <T extends FieldValues>(props: SelectProps) => <SelectCom {...props} />;
|
const SelectWrapper = (props: SelectProps) => <SelectCom {...props} />;
|
||||||
|
|
||||||
export const Select = dynamic(() => Promise.resolve(SelectWrapper), {
|
export const Select = dynamic(() => Promise.resolve(SelectWrapper), {
|
||||||
ssr: false,
|
ssr: false,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { NotificationPayload, ValidationFailed, ValidationSuccess } from "@repo/db";
|
import { ValidationFailed, ValidationSuccess } from "@repo/db";
|
||||||
import { BaseNotification } from "_components/customToasts/BaseNotification";
|
import { BaseNotification } from "_components/customToasts/BaseNotification";
|
||||||
import { MapStore, useMapStore } from "_store/mapStore";
|
import { MapStore } from "_store/mapStore";
|
||||||
import { Check, Cross } from "lucide-react";
|
import { Check, Cross } from "lucide-react";
|
||||||
import toast, { Toast } from "react-hot-toast";
|
import toast, { Toast } from "react-hot-toast";
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import { FMS_STATUS_COLORS } from "_helpers/fmsStatusColors";
|
|||||||
import { editConnectedAircraftAPI, getConnectedAircraftsAPI } from "_querys/aircrafts";
|
import { editConnectedAircraftAPI, getConnectedAircraftsAPI } from "_querys/aircrafts";
|
||||||
import { getStationsAPI } from "_querys/stations";
|
import { getStationsAPI } from "_querys/stations";
|
||||||
import { useMapStore } from "_store/mapStore";
|
import { useMapStore } from "_store/mapStore";
|
||||||
import { cpSync } from "fs";
|
|
||||||
import { X } from "lucide-react";
|
import { X } from "lucide-react";
|
||||||
import { useEffect, useRef, useState } from "react";
|
import { useEffect, useRef, useState } from "react";
|
||||||
import { Toast, toast } from "react-hot-toast";
|
import { Toast, toast } from "react-hot-toast";
|
||||||
@@ -67,7 +66,7 @@ export const StatusToast = ({ event, t }: { event: StationStatus; t: Toast }) =>
|
|||||||
} else if (event.status == connectedAircraft?.fmsStatus && !aircraftDataAcurate) {
|
} else if (event.status == connectedAircraft?.fmsStatus && !aircraftDataAcurate) {
|
||||||
setAircraftDataAccurate(true);
|
setAircraftDataAccurate(true);
|
||||||
}
|
}
|
||||||
}, [connectedAircraft, station]);
|
}, [aircraftDataAcurate, connectedAircraft, event.status, t.id]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let soundRef: React.RefObject<HTMLAudioElement | null> | null = null;
|
let soundRef: React.RefObject<HTMLAudioElement | null> | null = null;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export const Chat = () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!session.data?.user.id) return;
|
if (!session.data?.user.id) return;
|
||||||
setOwnId(session.data?.user.id);
|
setOwnId(session.data?.user.id);
|
||||||
}, [session.data?.user.id]);
|
}, [session.data?.user.id, setOwnId]);
|
||||||
|
|
||||||
const filteredDispatcher = dispatcher?.filter((d) => d.userId !== session.data?.user.id);
|
const filteredDispatcher = dispatcher?.filter((d) => d.userId !== session.data?.user.id);
|
||||||
const filteredAircrafts = aircrafts?.filter((a) => a.userId !== session.data?.user.id);
|
const filteredAircrafts = aircrafts?.filter((a) => a.userId !== session.data?.user.id);
|
||||||
@@ -118,7 +118,7 @@ export const Chat = () => {
|
|||||||
const dispatcherUser = dispatcher?.find((d) => d.userId === addTabValue);
|
const dispatcherUser = dispatcher?.find((d) => d.userId === addTabValue);
|
||||||
const user = aircraftUser || dispatcherUser;
|
const user = aircraftUser || dispatcherUser;
|
||||||
if (!user) return;
|
if (!user) return;
|
||||||
let role = "Station" in user ? user.Station.bosCallsignShort : user.zone;
|
const role = "Station" in user ? user.Station.bosCallsignShort : user.zone;
|
||||||
addChat(addTabValue, `${asPublicUser(user.publicUser).fullName} (${role})`);
|
addChat(addTabValue, `${asPublicUser(user.publicUser).fullName} (${role})`);
|
||||||
setSelectedChat(addTabValue);
|
setSelectedChat(addTabValue);
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { cn } from "@repo/shared-components";
|
|||||||
import { ListCollapse, Plane } from "lucide-react";
|
import { ListCollapse, Plane } from "lucide-react";
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
import { getMissionsAPI } from "_querys/missions";
|
import { getMissionsAPI } from "_querys/missions";
|
||||||
import { Station } from "@repo/db";
|
import { Mission, Station } from "@repo/db";
|
||||||
import { getConnectedAircraftsAPI } from "_querys/aircrafts";
|
import { getConnectedAircraftsAPI } from "_querys/aircrafts";
|
||||||
import { FMS_STATUS_COLORS, FMS_STATUS_TEXT_COLORS } from "_helpers/fmsStatusColors";
|
import { FMS_STATUS_COLORS, FMS_STATUS_TEXT_COLORS } from "_helpers/fmsStatusColors";
|
||||||
import { useMapStore } from "_store/mapStore";
|
import { useMapStore } from "_store/mapStore";
|
||||||
@@ -20,7 +20,13 @@ export const SituationBoard = () => {
|
|||||||
const { data: missions } = useQuery({
|
const { data: missions } = useQuery({
|
||||||
queryKey: ["missions", "missions-on-stations"],
|
queryKey: ["missions", "missions-on-stations"],
|
||||||
queryFn: () =>
|
queryFn: () =>
|
||||||
getMissionsAPI(
|
getMissionsAPI<
|
||||||
|
Mission & {
|
||||||
|
MissionsOnStations: (Station & {
|
||||||
|
Station: Station;
|
||||||
|
})[];
|
||||||
|
}
|
||||||
|
>(
|
||||||
{
|
{
|
||||||
state: {
|
state: {
|
||||||
not: "finished",
|
not: "finished",
|
||||||
@@ -125,8 +131,8 @@ export const SituationBoard = () => {
|
|||||||
<td>{mission.missionKeywordAbbreviation}</td>
|
<td>{mission.missionKeywordAbbreviation}</td>
|
||||||
<td>{mission.addressCity}</td>
|
<td>{mission.addressCity}</td>
|
||||||
<td>
|
<td>
|
||||||
{(mission as any).MissionsOnStations?.map(
|
{mission.MissionsOnStations?.map(
|
||||||
(mos: { Station: Station }) => mos.Station?.bosCallsignShort,
|
(mos) => mos.Station?.bosCallsignShort,
|
||||||
).join(", ")}
|
).join(", ")}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ const AircraftMarker = ({ aircraft }: { aircraft: ConnectedAircraft & { Station:
|
|||||||
return () => {
|
return () => {
|
||||||
marker?.off("click", handleClick);
|
marker?.off("click", handleClick);
|
||||||
};
|
};
|
||||||
}, [aircraft.id, openAircraftMarker, setOpenAircraftMarker, markerRef.current]);
|
}, [aircraft.id, openAircraftMarker, setOpenAircraftMarker]);
|
||||||
|
|
||||||
const [anchor, setAnchor] = useState<"topleft" | "topright" | "bottomleft" | "bottomright">(
|
const [anchor, setAnchor] = useState<"topleft" | "topright" | "bottomleft" | "bottomright">(
|
||||||
"topleft",
|
"topleft",
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { usePannelStore } from "_store/pannelStore";
|
|
||||||
import { Control, Icon, LatLngExpression } from "leaflet";
|
import { Control, Icon, LatLngExpression } from "leaflet";
|
||||||
import { useEffect, useMemo, useRef, useState } from "react";
|
import { useEffect, useRef, useState } from "react";
|
||||||
import {
|
import {
|
||||||
LayerGroup,
|
LayerGroup,
|
||||||
LayersControl,
|
LayersControl,
|
||||||
@@ -15,7 +14,7 @@ import {
|
|||||||
Marker,
|
Marker,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
} from "react-leaflet";
|
} from "react-leaflet";
|
||||||
// @ts-ignore
|
// @ts-expect-error geojson hat keine Typen
|
||||||
import type { FeatureCollection, Geometry } from "geojson";
|
import type { FeatureCollection, Geometry } from "geojson";
|
||||||
import L from "leaflet";
|
import L from "leaflet";
|
||||||
import LEITSTELLENBERECHE from "./_geojson/Leitstellen.json";
|
import LEITSTELLENBERECHE from "./_geojson/Leitstellen.json";
|
||||||
@@ -197,7 +196,7 @@ const StationsLayer = ({ attribution }: { attribution: Control.Attribution }) =>
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const EsriSatellite = ({ attribution }: { attribution: Control.Attribution }) => {
|
const EsriSatellite = () => {
|
||||||
const accessToken = process.env.NEXT_PUBLIC_ESRI_ACCESS;
|
const accessToken = process.env.NEXT_PUBLIC_ESRI_ACCESS;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -221,8 +220,7 @@ const StrassentexteEsri = () => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const OpenAIP = ({ attribution }: { attribution: Control.Attribution }) => {
|
const OpenAIP = () => {
|
||||||
const accessToken = process.env.NEXT_PUBLIC_OPENAIP_ACCESS;
|
|
||||||
const ref = useRef<L.TileLayer | null>(null);
|
const ref = useRef<L.TileLayer | null>(null);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -241,7 +239,7 @@ const OpenAIP = ({ attribution }: { attribution: Control.Attribution }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const NiederschlagOverlay = ({ attribution }: { attribution: Control.Attribution }) => {
|
const NiederschlagOverlay = () => {
|
||||||
const tileLayerRef = useRef<L.TileLayer.WMS | null>(null);
|
const tileLayerRef = useRef<L.TileLayer.WMS | null>(null);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -311,7 +309,7 @@ export const BaseMaps = () => {
|
|||||||
<RadioAreaLayer />
|
<RadioAreaLayer />
|
||||||
</LayersControl.Overlay>
|
</LayersControl.Overlay>
|
||||||
<LayersControl.Overlay name={"Niederschlag"}>
|
<LayersControl.Overlay name={"Niederschlag"}>
|
||||||
<NiederschlagOverlay attribution={map.attributionControl} />
|
<NiederschlagOverlay />
|
||||||
</LayersControl.Overlay>
|
</LayersControl.Overlay>
|
||||||
|
|
||||||
<LayersControl.Overlay name={"Windkraftanlagen offshore"}>
|
<LayersControl.Overlay name={"Windkraftanlagen offshore"}>
|
||||||
@@ -322,7 +320,7 @@ export const BaseMaps = () => {
|
|||||||
<StationsLayer attribution={map.attributionControl} />
|
<StationsLayer attribution={map.attributionControl} />
|
||||||
</LayersControl.Overlay>
|
</LayersControl.Overlay>
|
||||||
<LayersControl.Overlay name={"OpenAIP"}>
|
<LayersControl.Overlay name={"OpenAIP"}>
|
||||||
<OpenAIP attribution={map.attributionControl} />
|
<OpenAIP />
|
||||||
</LayersControl.Overlay>
|
</LayersControl.Overlay>
|
||||||
|
|
||||||
<LayersControl.BaseLayer name="OpenStreetMap Dark" checked>
|
<LayersControl.BaseLayer name="OpenStreetMap Dark" checked>
|
||||||
@@ -348,7 +346,7 @@ export const BaseMaps = () => {
|
|||||||
</LayersControl.BaseLayer>
|
</LayersControl.BaseLayer>
|
||||||
<LayersControl.BaseLayer name="ESRI Satellite">
|
<LayersControl.BaseLayer name="ESRI Satellite">
|
||||||
<LayerGroup>
|
<LayerGroup>
|
||||||
<EsriSatellite attribution={map.attributionControl} />
|
<EsriSatellite />
|
||||||
<StrassentexteEsri />
|
<StrassentexteEsri />
|
||||||
</LayerGroup>
|
</LayerGroup>
|
||||||
</LayersControl.BaseLayer>
|
</LayersControl.BaseLayer>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import { OSMWay, Prisma } from "@repo/db";
|
import { OSMWay } from "@repo/db";
|
||||||
import { useDispatchConnectionStore } from "_store/dispatch/connectionStore";
|
import { useDispatchConnectionStore } from "_store/dispatch/connectionStore";
|
||||||
import { useMapStore } from "_store/mapStore";
|
import { useMapStore } from "_store/mapStore";
|
||||||
import { usePannelStore } from "_store/pannelStore";
|
import { usePannelStore } from "_store/pannelStore";
|
||||||
@@ -8,8 +8,6 @@ import { getOsmAddress } from "_querys/osm";
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import toast from "react-hot-toast";
|
import toast from "react-hot-toast";
|
||||||
import { Popup, useMap } from "react-leaflet";
|
import { Popup, useMap } from "react-leaflet";
|
||||||
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
||||||
import { editMissionAPI } from "_querys/missions";
|
|
||||||
import { findClosestPolygon } from "_helpers/findClosestPolygon";
|
import { findClosestPolygon } from "_helpers/findClosestPolygon";
|
||||||
|
|
||||||
export const ContextMenu = () => {
|
export const ContextMenu = () => {
|
||||||
@@ -22,8 +20,9 @@ export const ContextMenu = () => {
|
|||||||
setSearchPopup,
|
setSearchPopup,
|
||||||
toggleSearchElementSelection,
|
toggleSearchElementSelection,
|
||||||
} = useMapStore();
|
} = useMapStore();
|
||||||
const { missionFormValues, setMissionFormValues, setOpen, isOpen, editingMissionId } =
|
const { missionFormValues, setMissionFormValues, setOpen, isOpen } = usePannelStore(
|
||||||
usePannelStore((state) => state);
|
(state) => state,
|
||||||
|
);
|
||||||
const [showRulerOptions, setShowRulerOptions] = useState(false);
|
const [showRulerOptions, setShowRulerOptions] = useState(false);
|
||||||
const [rulerHover, setRulerHover] = useState(false);
|
const [rulerHover, setRulerHover] = useState(false);
|
||||||
const [rulerOptionsHover, setRulerOptionsHover] = useState(false);
|
const [rulerOptionsHover, setRulerOptionsHover] = useState(false);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ const MissionPopupContent = ({
|
|||||||
default:
|
default:
|
||||||
return <span className="text-gray-100">Error</span>;
|
return <span className="text-gray-100">Error</span>;
|
||||||
}
|
}
|
||||||
}, [currentTab, mission]);
|
}, [currentTab, hpgNeedsAttention, mission]);
|
||||||
|
|
||||||
const setOpenMissionMarker = useMapStore((state) => state.setOpenMissionMarker);
|
const setOpenMissionMarker = useMapStore((state) => state.setOpenMissionMarker);
|
||||||
const { anchor } = useSmartPopup();
|
const { anchor } = useSmartPopup();
|
||||||
@@ -350,6 +350,10 @@ const MissionMarker = ({ mission }: { mission: Mission }) => {
|
|||||||
editingMissionId,
|
editingMissionId,
|
||||||
mission.addressLat,
|
mission.addressLat,
|
||||||
mission.addressLng,
|
mission.addressLng,
|
||||||
|
mission.hpgLocationLat,
|
||||||
|
mission.hpgLocationLng,
|
||||||
|
mission.hpgValidationState,
|
||||||
|
mission.id,
|
||||||
missionFormValues?.addressLat,
|
missionFormValues?.addressLat,
|
||||||
missionFormValues?.addressLng,
|
missionFormValues?.addressLng,
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { useEffect } from "react";
|
|||||||
|
|
||||||
export const SearchElements = () => {
|
export const SearchElements = () => {
|
||||||
const { searchElements, openMissionMarker, setSearchElements } = useMapStore();
|
const { searchElements, openMissionMarker, setSearchElements } = useMapStore();
|
||||||
const { isOpen: pannelOpen, editingMissionId } = usePannelStore((state) => state);
|
const { isOpen: pannelOpen } = usePannelStore((state) => state);
|
||||||
const { data: missions } = useQuery({
|
const { data: missions } = useQuery({
|
||||||
queryKey: ["missions"],
|
queryKey: ["missions"],
|
||||||
queryFn: () =>
|
queryFn: () =>
|
||||||
@@ -42,7 +42,7 @@ export const SearchElements = () => {
|
|||||||
);
|
);
|
||||||
setSearchElements(elements.filter((e) => !!e));
|
setSearchElements(elements.filter((e) => !!e));
|
||||||
}
|
}
|
||||||
}, [openMissionMarker, pannelOpen, missions]);
|
}, [openMissionMarker, pannelOpen, missions, setSearchElements]);
|
||||||
|
|
||||||
const SearchElement = ({ element }: { element: OSMWay }) => {
|
const SearchElement = ({ element }: { element: OSMWay }) => {
|
||||||
const { toggleSearchElementSelection } = useMapStore();
|
const { toggleSearchElementSelection } = useMapStore();
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ const StationTab = ({ aircraft }: { aircraft: ConnectedAircraft & { Station: Sta
|
|||||||
const lstName = useMemo(() => {
|
const lstName = useMemo(() => {
|
||||||
if (!aircraft.posLng || !aircraft.posLat) return station.bosRadioArea;
|
if (!aircraft.posLng || !aircraft.posLat) return station.bosRadioArea;
|
||||||
return findLeitstelleForPosition(aircraft.posLng, aircraft.posLat);
|
return findLeitstelleForPosition(aircraft.posLng, aircraft.posLat);
|
||||||
}, [aircraft.posLng, aircraft.posLat]);
|
}, [aircraft.posLng, aircraft.posLat, station.bosRadioArea]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="p-4 text-base-content">
|
<div className="p-4 text-base-content">
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import {
|
|||||||
SmartphoneNfc,
|
SmartphoneNfc,
|
||||||
CheckCheck,
|
CheckCheck,
|
||||||
Cross,
|
Cross,
|
||||||
Radio,
|
|
||||||
Route,
|
Route,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import {
|
import {
|
||||||
@@ -26,12 +25,9 @@ import {
|
|||||||
HpgState,
|
HpgState,
|
||||||
HpgValidationState,
|
HpgValidationState,
|
||||||
Mission,
|
Mission,
|
||||||
MissionAlertLog,
|
|
||||||
MissionCompletedLog,
|
|
||||||
MissionLog,
|
MissionLog,
|
||||||
MissionMessageLog,
|
MissionMessageLog,
|
||||||
Prisma,
|
Prisma,
|
||||||
Station,
|
|
||||||
} from "@repo/db";
|
} from "@repo/db";
|
||||||
import { usePannelStore } from "_store/pannelStore";
|
import { usePannelStore } from "_store/pannelStore";
|
||||||
import { useSession } from "next-auth/react";
|
import { useSession } from "next-auth/react";
|
||||||
@@ -143,13 +139,16 @@ const Einsatzdetails = ({
|
|||||||
state: "finished",
|
state: "finished",
|
||||||
missionLog: {
|
missionLog: {
|
||||||
push: {
|
push: {
|
||||||
type: "completed-log",
|
toJSON: () => ({
|
||||||
|
type: "message-log",
|
||||||
auto: false,
|
auto: false,
|
||||||
timeStamp: new Date().toISOString(),
|
timeStamp: new Date().toISOString(),
|
||||||
data: {
|
data: {
|
||||||
user: getPublicUser(session.data?.user, { ignorePrivacy: true }),
|
message: "Einsatz abgeschlossen",
|
||||||
|
user: getPublicUser(session.data.user, { ignorePrivacy: true }),
|
||||||
|
},
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
} as any,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -408,11 +407,6 @@ const Rettungsmittel = ({ mission }: { mission: Mission }) => {
|
|||||||
refetchMissionStationIds();
|
refetchMissionStationIds();
|
||||||
}, [mission.missionStationIds, refetchMissionStationIds]);
|
}, [mission.missionStationIds, refetchMissionStationIds]);
|
||||||
|
|
||||||
const { data: allStations } = useQuery({
|
|
||||||
queryKey: ["stations"],
|
|
||||||
queryFn: () => getStationsAPI(),
|
|
||||||
});
|
|
||||||
|
|
||||||
const sendAlertMutation = useMutation({
|
const sendAlertMutation = useMutation({
|
||||||
mutationKey: ["missions"],
|
mutationKey: ["missions"],
|
||||||
mutationFn: ({
|
mutationFn: ({
|
||||||
@@ -527,6 +521,7 @@ const Rettungsmittel = ({ mission }: { mission: Mission }) => {
|
|||||||
menuPlacement="top"
|
menuPlacement="top"
|
||||||
className="min-w-[320px] flex-1"
|
className="min-w-[320px] flex-1"
|
||||||
isMulti={false}
|
isMulti={false}
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
onChange={(v: any) => {
|
onChange={(v: any) => {
|
||||||
setSelectedStation(v);
|
setSelectedStation(v);
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { PublicUser } from "@repo/db";
|
import { PublicUser } from "@repo/db";
|
||||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||||
import { cn, PenaltyDropdown } from "@repo/shared-components";
|
import { PenaltyDropdown } from "@repo/shared-components";
|
||||||
import { getConnectedAircraftsAPI, kickAircraftAPI } from "_querys/aircrafts";
|
import { getConnectedAircraftsAPI, kickAircraftAPI } from "_querys/aircrafts";
|
||||||
import { getConnectedDispatcherAPI, kickDispatcherAPI } from "_querys/dispatcher";
|
import { getConnectedDispatcherAPI, kickDispatcherAPI } from "_querys/dispatcher";
|
||||||
import { getLivekitRooms, kickLivekitParticipant } from "_querys/livekit";
|
import { getLivekitRooms, kickLivekitParticipant } from "_querys/livekit";
|
||||||
import { ParticipantInfo } from "livekit-server-sdk";
|
import { ParticipantInfo } from "livekit-server-sdk";
|
||||||
import {
|
import {
|
||||||
Eye,
|
|
||||||
LockKeyhole,
|
LockKeyhole,
|
||||||
Plane,
|
Plane,
|
||||||
RedoDot,
|
RedoDot,
|
||||||
@@ -17,7 +16,7 @@ import {
|
|||||||
UserCheck,
|
UserCheck,
|
||||||
Workflow,
|
Workflow,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { ReactNode, useRef, useState } from "react";
|
import { useRef } from "react";
|
||||||
import toast from "react-hot-toast";
|
import toast from "react-hot-toast";
|
||||||
|
|
||||||
export default function AdminPanel() {
|
export default function AdminPanel() {
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import { SettingsIcon, Volume2 } from "lucide-react";
|
|||||||
import MicVolumeBar from "_components/MicVolumeIndication";
|
import MicVolumeBar from "_components/MicVolumeIndication";
|
||||||
import { useMutation, useQuery } from "@tanstack/react-query";
|
import { useMutation, useQuery } from "@tanstack/react-query";
|
||||||
import { editUserAPI, getUserAPI } from "_querys/user";
|
import { editUserAPI, getUserAPI } from "_querys/user";
|
||||||
import { Prisma } from "@repo/db";
|
|
||||||
import { useSession } from "next-auth/react";
|
import { useSession } from "next-auth/react";
|
||||||
import { useAudioStore } from "_store/audioStore";
|
import { useAudioStore } from "_store/audioStore";
|
||||||
import toast from "react-hot-toast";
|
import toast from "react-hot-toast";
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ export function findClosestPolygon(
|
|||||||
const polygon = toPolygonFeature(way.nodes);
|
const polygon = toPolygonFeature(way.nodes);
|
||||||
if (!polygon) continue;
|
if (!polygon) continue;
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
const center = centroid(polygon as any).geometry.coordinates; // [lon, lat]
|
const center = centroid(polygon as any).geometry.coordinates; // [lon, lat]
|
||||||
|
|
||||||
const newDistance = distance([referencePoint.lon, referencePoint.lat], center);
|
const newDistance = distance([referencePoint.lon, referencePoint.lat], center);
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { point, multiPolygon, booleanPointInPolygon, booleanIntersects, polygon } from "@turf/turf";
|
import { point, booleanPointInPolygon, polygon } from "@turf/turf";
|
||||||
import leitstellenGeoJSON from "../_components/map/_geojson/Leitstellen.json"; // Pfad anpassen
|
import leitstellenGeoJSON from "../_components/map/_geojson/Leitstellen.json"; // Pfad anpassen
|
||||||
|
|
||||||
export function findLeitstelleForPosition(lat: number, lng: number) {
|
export function findLeitstelleForPosition(lat: number, lng: number) {
|
||||||
const heliPoint = point([lat, lng]);
|
const heliPoint = point([lat, lng]);
|
||||||
|
|
||||||
for (const feature of (leitstellenGeoJSON as any).features) {
|
for (const feature of (leitstellenGeoJSON as GeoJSON.FeatureCollection).features) {
|
||||||
const geom = feature.geometry;
|
const geom = feature.geometry;
|
||||||
|
|
||||||
if (geom.type === "Polygon") {
|
if (geom.type === "Polygon") {
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import { useAudioStore } from "_store/audioStore";
|
import { useAudioStore } from "_store/audioStore";
|
||||||
import {
|
import {
|
||||||
LocalParticipant,
|
|
||||||
LocalTrackPublication,
|
LocalTrackPublication,
|
||||||
Participant,
|
|
||||||
RemoteParticipant,
|
RemoteParticipant,
|
||||||
RemoteTrack,
|
RemoteTrack,
|
||||||
RemoteTrackPublication,
|
RemoteTrackPublication,
|
||||||
@@ -30,19 +28,12 @@ export const handleTrackSubscribed = (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const handleTrackUnsubscribed = (
|
export const handleTrackUnsubscribed = (track: RemoteTrack) => {
|
||||||
track: RemoteTrack,
|
|
||||||
publication: RemoteTrackPublication,
|
|
||||||
participant: RemoteParticipant,
|
|
||||||
) => {
|
|
||||||
// remove tracks from all attached elements
|
// remove tracks from all attached elements
|
||||||
track.detach();
|
track.detach();
|
||||||
};
|
};
|
||||||
|
|
||||||
export const handleLocalTrackUnpublished = (
|
export const handleLocalTrackUnpublished = (publication: LocalTrackPublication) => {
|
||||||
publication: LocalTrackPublication,
|
|
||||||
participant: LocalParticipant,
|
|
||||||
) => {
|
|
||||||
// when local tracks are ended, update UI to remove them from rendering
|
// when local tracks are ended, update UI to remove them from rendering
|
||||||
publication.track?.detach();
|
publication.track?.detach();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ConnectedAircraft, PositionLog, Prisma, PublicUser, Station } from "@repo/db";
|
import { ConnectedAircraft, PositionLog, Prisma, Station } from "@repo/db";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { serverApi } from "_helpers/axios";
|
import { serverApi } from "_helpers/axios";
|
||||||
import { checkSimulatorConnected } from "@repo/shared-components";
|
import { checkSimulatorConnected } from "@repo/shared-components";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ConnectedAircraft, ConnectedDispatcher, Prisma } from "@repo/db";
|
import { ConnectedDispatcher, Prisma } from "@repo/db";
|
||||||
import { serverApi } from "_helpers/axios";
|
import { serverApi } from "_helpers/axios";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ import { Mission, MissionSdsLog, Prisma } from "@repo/db";
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { serverApi } from "_helpers/axios";
|
import { serverApi } from "_helpers/axios";
|
||||||
|
|
||||||
export const getMissionsAPI = async (
|
export const getMissionsAPI = async <T = Mission>(
|
||||||
filter?: Prisma.MissionWhereInput,
|
filter?: Prisma.MissionWhereInput,
|
||||||
include?: Prisma.MissionInclude,
|
include?: Prisma.MissionInclude,
|
||||||
orderBy?: Prisma.MissionOrderByWithRelationInput,
|
orderBy?: Prisma.MissionOrderByWithRelationInput,
|
||||||
) => {
|
): Promise<T[]> => {
|
||||||
const res = await axios.get<Mission[]>("/api/missions", {
|
const res = await axios.get<T[]>("/api/missions", {
|
||||||
params: {
|
params: {
|
||||||
filter: JSON.stringify(filter),
|
filter: JSON.stringify(filter),
|
||||||
include: JSON.stringify(include),
|
include: JSON.stringify(include),
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { raw } from "../../../../packages/database/generated/client/runtime/library";
|
|
||||||
|
|
||||||
export const getOsmAddress = async (lat: number, lng: number) => {
|
export const getOsmAddress = async (lat: number, lng: number) => {
|
||||||
const address = await fetch(
|
const address = await fetch(
|
||||||
`https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lng}&format=json`,
|
`https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lng}&format=json`,
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ export const useAudioStore = create<TalkState>((set, get) => ({
|
|||||||
const newSpeaktingParticipants = get().speakingParticipants.filter(
|
const newSpeaktingParticipants = get().speakingParticipants.filter(
|
||||||
(p) => !(p.identity === participant.identity),
|
(p) => !(p.identity === participant.identity),
|
||||||
);
|
);
|
||||||
set((state) => ({
|
set(() => ({
|
||||||
speakingParticipants: newSpeaktingParticipants,
|
speakingParticipants: newSpeaktingParticipants,
|
||||||
}));
|
}));
|
||||||
if (newSpeaktingParticipants.length === 0 && get().transmitBlocked) {
|
if (newSpeaktingParticipants.length === 0 && get().transmitBlocked) {
|
||||||
@@ -77,8 +77,7 @@ export const useAudioStore = create<TalkState>((set, get) => ({
|
|||||||
set({ micDeviceId, micVolume });
|
set({ micDeviceId, micVolume });
|
||||||
},
|
},
|
||||||
toggleTalking: () => {
|
toggleTalking: () => {
|
||||||
const { room, isTalking, micDeviceId, micVolume, speakingParticipants, transmitBlocked } =
|
const { room, isTalking, micDeviceId, speakingParticipants, transmitBlocked } = get();
|
||||||
get();
|
|
||||||
if (!room) return;
|
if (!room) return;
|
||||||
|
|
||||||
if (speakingParticipants.length > 0 && !isTalking && !transmitBlocked) {
|
if (speakingParticipants.length > 0 && !isTalking && !transmitBlocked) {
|
||||||
@@ -187,7 +186,7 @@ interface PTTData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handlePTT = (data: PTTData) => {
|
const handlePTT = (data: PTTData) => {
|
||||||
const { shouldTransmit, source } = data;
|
const { shouldTransmit } = data;
|
||||||
const { room, speakingParticipants } = useAudioStore.getState();
|
const { room, speakingParticipants } = useAudioStore.getState();
|
||||||
if (!room) return;
|
if (!room) return;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { prisma, Prisma } from "@repo/db";
|
import { prisma } from "@repo/db";
|
||||||
import { NextRequest, NextResponse } from "next/server";
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
|
|
||||||
export async function GET(request: NextRequest): Promise<NextResponse> {
|
export async function GET(request: NextRequest): Promise<NextResponse> {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import { AuthOptions, getServerSession as getNextAuthServerSession } from "next-auth";
|
import { AuthOptions, getServerSession as getNextAuthServerSession } from "next-auth";
|
||||||
import { PrismaAdapter } from "@next-auth/prisma-adapter";
|
import { PrismaAdapter } from "@next-auth/prisma-adapter";
|
||||||
import Credentials from "next-auth/providers/credentials";
|
import Credentials from "next-auth/providers/credentials";
|
||||||
import { prisma, PrismaClient } from "@repo/db";
|
import { prisma } from "@repo/db";
|
||||||
|
|
||||||
export const options: AuthOptions = {
|
export const options: AuthOptions = {
|
||||||
providers: [
|
providers: [
|
||||||
@@ -9,7 +10,7 @@ export const options: AuthOptions = {
|
|||||||
credentials: {
|
credentials: {
|
||||||
code: { label: "code", type: "code" },
|
code: { label: "code", type: "code" },
|
||||||
},
|
},
|
||||||
async authorize(credentials, req) {
|
async authorize(credentials) {
|
||||||
try {
|
try {
|
||||||
if (!credentials) throw new Error("No credentials provided");
|
if (!credentials) throw new Error("No credentials provided");
|
||||||
const code = await prisma.oAuthToken.findFirstOrThrow({
|
const code = await prisma.oAuthToken.findFirstOrThrow({
|
||||||
@@ -60,7 +61,7 @@ export const options: AuthOptions = {
|
|||||||
|
|
||||||
adapter: PrismaAdapter(prisma as any),
|
adapter: PrismaAdapter(prisma as any),
|
||||||
callbacks: {
|
callbacks: {
|
||||||
jwt: async ({ token, user, ...rest }) => {
|
jwt: async ({ token, user }) => {
|
||||||
if (user && "firstname" in user) {
|
if (user && "firstname" in user) {
|
||||||
return {
|
return {
|
||||||
...token,
|
...token,
|
||||||
@@ -69,7 +70,7 @@ export const options: AuthOptions = {
|
|||||||
}
|
}
|
||||||
return token;
|
return token;
|
||||||
},
|
},
|
||||||
session: async ({ session, user, token }) => {
|
session: async ({ session, token }) => {
|
||||||
const dbUser = await prisma.user.findUnique({
|
const dbUser = await prisma.user.findUnique({
|
||||||
where: {
|
where: {
|
||||||
id: token?.sub,
|
id: token?.sub,
|
||||||
|
|||||||
@@ -3,15 +3,10 @@ import { RoomManager } from "_helpers/LivekitRoomManager";
|
|||||||
import { getServerSession } from "api/auth/[...nextauth]/auth";
|
import { getServerSession } from "api/auth/[...nextauth]/auth";
|
||||||
import { NextRequest } from "next/server";
|
import { NextRequest } from "next/server";
|
||||||
|
|
||||||
export const GET = async (request: NextRequest) => {
|
export const GET = async () => {
|
||||||
const session = await getServerSession();
|
const session = await getServerSession();
|
||||||
|
|
||||||
if (!session) return Response.json({ message: "Unauthorized" }, { status: 401 });
|
if (!session) return Response.json({ message: "Unauthorized" }, { status: 401 });
|
||||||
const user = await prisma.user.findUnique({
|
|
||||||
where: {
|
|
||||||
id: session.user.id,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const rooms = await RoomManager.listRooms();
|
const rooms = await RoomManager.listRooms();
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import { getServerSession } from "api/auth/[...nextauth]/auth";
|
import { getServerSession } from "api/auth/[...nextauth]/auth";
|
||||||
import { ROOMS } from "_data/livekitRooms";
|
|
||||||
import { AccessToken } from "livekit-server-sdk";
|
import { AccessToken } from "livekit-server-sdk";
|
||||||
import { NextRequest } from "next/server";
|
import { NextRequest } from "next/server";
|
||||||
import { getPublicUser, prisma } from "@repo/db";
|
import { getPublicUser, prisma } from "@repo/db";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { PositionLog, Prisma, prisma, User } from "@repo/db";
|
import { PositionLog, prisma, User } from "@repo/db";
|
||||||
import { getServerSession } from "api/auth/[...nextauth]/auth";
|
import { getServerSession } from "api/auth/[...nextauth]/auth";
|
||||||
import { verify } from "jsonwebtoken";
|
import { verify } from "jsonwebtoken";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { nextJsConfig } from "@repo/eslint-config/next-js";
|
import nextJsConfig from "@repo/eslint-config/next-js";
|
||||||
|
|
||||||
/** @type {import("eslint").Linter.Config} */
|
/** @type {import("eslint").Linter.Config} */
|
||||||
export default nextJsConfig;
|
export default nextJsConfig;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
"check-types": "tsc --noEmit"
|
"check-types": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@eslint/eslintrc": "^3.3.1",
|
||||||
"@hookform/resolvers": "^5.1.1",
|
"@hookform/resolvers": "^5.1.1",
|
||||||
"@livekit/components-react": "^2.9.12",
|
"@livekit/components-react": "^2.9.12",
|
||||||
"@livekit/components-styles": "^1.1.6",
|
"@livekit/components-styles": "^1.1.6",
|
||||||
@@ -34,6 +35,7 @@
|
|||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"daisyui": "^5.0.43",
|
"daisyui": "^5.0.43",
|
||||||
"date-fns": "^4.1.0",
|
"date-fns": "^4.1.0",
|
||||||
|
"eslint-config-next": "^15.3.4",
|
||||||
"geojson": "^0.5.0",
|
"geojson": "^0.5.0",
|
||||||
"i": "^0.3.7",
|
"i": "^0.3.7",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
|
|||||||
1
apps/dispatch/types/next-auth.d.ts
vendored
1
apps/dispatch/types/next-auth.d.ts
vendored
@@ -1,4 +1,3 @@
|
|||||||
import NextAuth from "next-auth";
|
|
||||||
import { User as IUser } from "@repo/db";
|
import { User as IUser } from "@repo/db";
|
||||||
|
|
||||||
declare module "next-auth" {
|
declare module "next-auth" {
|
||||||
|
|||||||
@@ -24,5 +24,8 @@
|
|||||||
"workspaces": [
|
"workspaces": [
|
||||||
"apps/*",
|
"apps/*",
|
||||||
"packages/*"
|
"packages/*"
|
||||||
]
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"eslint": "^9.30.1"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,4 +29,9 @@ export default defineConfig([
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
...tseslint.config(js.configs.recommended, tseslint.configs.recommended, eslintConfigPrettier),
|
...tseslint.config(js.configs.recommended, tseslint.configs.recommended, eslintConfigPrettier),
|
||||||
|
{
|
||||||
|
rules: {
|
||||||
|
"@typescript-eslint/no-unused-vars": "warn",
|
||||||
|
},
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -16,5 +16,6 @@
|
|||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"target": "ES2022"
|
"target": "ES2022"
|
||||||
}
|
},
|
||||||
|
"exclude": ["node_modules", "dist", ".next", "out"]
|
||||||
}
|
}
|
||||||
|
|||||||
350
pnpm-lock.yaml
generated
350
pnpm-lock.yaml
generated
@@ -7,6 +7,10 @@ settings:
|
|||||||
importers:
|
importers:
|
||||||
|
|
||||||
.:
|
.:
|
||||||
|
dependencies:
|
||||||
|
eslint:
|
||||||
|
specifier: ^9.30.1
|
||||||
|
version: 9.30.1(jiti@2.4.2)
|
||||||
devDependencies:
|
devDependencies:
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^3.5.3
|
specifier: ^3.5.3
|
||||||
@@ -81,6 +85,9 @@ importers:
|
|||||||
|
|
||||||
apps/dispatch:
|
apps/dispatch:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@eslint/eslintrc':
|
||||||
|
specifier: ^3.3.1
|
||||||
|
version: 3.3.1
|
||||||
'@hookform/resolvers':
|
'@hookform/resolvers':
|
||||||
specifier: ^5.1.1
|
specifier: ^5.1.1
|
||||||
version: 5.1.1(react-hook-form@7.59.0(react@19.1.0))
|
version: 5.1.1(react-hook-form@7.59.0(react@19.1.0))
|
||||||
@@ -95,7 +102,7 @@ importers:
|
|||||||
version: 0.5.7(@types/dom-mediacapture-transform@0.1.11)(livekit-client@2.14.0(@types/dom-mediacapture-record@1.0.22))
|
version: 0.5.7(@types/dom-mediacapture-transform@0.1.11)(livekit-client@2.14.0(@types/dom-mediacapture-record@1.0.22))
|
||||||
'@next-auth/prisma-adapter':
|
'@next-auth/prisma-adapter':
|
||||||
specifier: ^1.0.7
|
specifier: ^1.0.7
|
||||||
version: 1.0.7(@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3))(next-auth@4.24.11(next@15.3.4(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))
|
version: 1.0.7(@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3))(next-auth@4.24.11(next@15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))
|
||||||
'@radix-ui/react-icons':
|
'@radix-ui/react-icons':
|
||||||
specifier: ^1.3.2
|
specifier: ^1.3.2
|
||||||
version: 1.3.2(react@19.1.0)
|
version: 1.3.2(react@19.1.0)
|
||||||
@@ -147,6 +154,9 @@ importers:
|
|||||||
date-fns:
|
date-fns:
|
||||||
specifier: ^4.1.0
|
specifier: ^4.1.0
|
||||||
version: 4.1.0
|
version: 4.1.0
|
||||||
|
eslint-config-next:
|
||||||
|
specifier: ^15.3.4
|
||||||
|
version: 15.3.4(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
geojson:
|
geojson:
|
||||||
specifier: ^0.5.0
|
specifier: ^0.5.0
|
||||||
version: 0.5.0
|
version: 0.5.0
|
||||||
@@ -176,7 +186,7 @@ importers:
|
|||||||
version: 15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
version: 15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||||
next-auth:
|
next-auth:
|
||||||
specifier: ^4.24.11
|
specifier: ^4.24.11
|
||||||
version: 4.24.11(next@15.3.4(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
version: 4.24.11(next@15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||||
npm:
|
npm:
|
||||||
specifier: ^11.4.2
|
specifier: ^11.4.2
|
||||||
version: 11.4.2
|
version: 11.4.2
|
||||||
@@ -340,7 +350,7 @@ importers:
|
|||||||
version: 5.1.1(react-hook-form@7.59.0(react@19.1.0))
|
version: 5.1.1(react-hook-form@7.59.0(react@19.1.0))
|
||||||
'@next-auth/prisma-adapter':
|
'@next-auth/prisma-adapter':
|
||||||
specifier: ^1.0.7
|
specifier: ^1.0.7
|
||||||
version: 1.0.7(@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3))(next-auth@4.24.11(next@15.3.4(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))
|
version: 1.0.7(@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3))(next-auth@4.24.11(next@15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))
|
||||||
'@radix-ui/react-icons':
|
'@radix-ui/react-icons':
|
||||||
specifier: ^1.3.2
|
specifier: ^1.3.2
|
||||||
version: 1.3.2(react@19.1.0)
|
version: 1.3.2(react@19.1.0)
|
||||||
@@ -415,7 +425,7 @@ importers:
|
|||||||
version: 15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
version: 15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||||
next-auth:
|
next-auth:
|
||||||
specifier: ^4.24.11
|
specifier: ^4.24.11
|
||||||
version: 4.24.11(next@15.3.4(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
version: 4.24.11(next@15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||||
next-remove-imports:
|
next-remove-imports:
|
||||||
specifier: ^1.0.12
|
specifier: ^1.0.12
|
||||||
version: 1.0.12(webpack@5.99.9)
|
version: 1.0.12(webpack@5.99.9)
|
||||||
@@ -562,7 +572,7 @@ importers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/eslint-plugin':
|
'@typescript-eslint/eslint-plugin':
|
||||||
specifier: ^8.36.0
|
specifier: ^8.36.0
|
||||||
version: 8.36.0(@typescript-eslint/parser@8.35.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
version: 8.36.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@eslint/js':
|
'@eslint/js':
|
||||||
specifier: ^9.17.0
|
specifier: ^9.17.0
|
||||||
@@ -1234,6 +1244,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww==}
|
resolution: {integrity: sha512-Wzw3wQwPvc9sHM+NjakWTcPx11mbZyiYHuwWa/QfZ7cIRX7WK54PSk7bdyXDaoaopUcMatv1zaQvOAAO8hCdww==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
|
'@eslint/js@9.30.1':
|
||||||
|
resolution: {integrity: sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
|
||||||
'@eslint/object-schema@2.1.6':
|
'@eslint/object-schema@2.1.6':
|
||||||
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
|
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@@ -2569,14 +2583,6 @@ packages:
|
|||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.35.0':
|
|
||||||
resolution: {integrity: sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==}
|
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
|
||||||
peerDependencies:
|
|
||||||
'@typescript-eslint/parser': ^8.35.0
|
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.36.0':
|
'@typescript-eslint/eslint-plugin@8.36.0':
|
||||||
resolution: {integrity: sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg==}
|
resolution: {integrity: sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@@ -2654,13 +2660,6 @@ packages:
|
|||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.35.0':
|
|
||||||
resolution: {integrity: sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==}
|
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
|
||||||
peerDependencies:
|
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.36.0':
|
'@typescript-eslint/type-utils@8.36.0':
|
||||||
resolution: {integrity: sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg==}
|
resolution: {integrity: sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@@ -2705,13 +2704,6 @@ packages:
|
|||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
typescript: '>=4.8.4 <5.9.0'
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.35.0':
|
|
||||||
resolution: {integrity: sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==}
|
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
|
||||||
peerDependencies:
|
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
|
||||||
typescript: '>=4.8.4 <5.9.0'
|
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.36.0':
|
'@typescript-eslint/utils@8.36.0':
|
||||||
resolution: {integrity: sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==}
|
resolution: {integrity: sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@@ -3754,6 +3746,16 @@ packages:
|
|||||||
jiti:
|
jiti:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
eslint@9.30.1:
|
||||||
|
resolution: {integrity: sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==}
|
||||||
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
jiti: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
jiti:
|
||||||
|
optional: true
|
||||||
|
|
||||||
espree@10.3.0:
|
espree@10.3.0:
|
||||||
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
|
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
|
||||||
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
|
||||||
@@ -6675,6 +6677,11 @@ snapshots:
|
|||||||
eslint: 9.30.0(jiti@2.4.2)
|
eslint: 9.30.0(jiti@2.4.2)
|
||||||
eslint-visitor-keys: 3.4.3
|
eslint-visitor-keys: 3.4.3
|
||||||
|
|
||||||
|
'@eslint-community/eslint-utils@4.7.0(eslint@9.30.1(jiti@2.4.2))':
|
||||||
|
dependencies:
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
eslint-visitor-keys: 3.4.3
|
||||||
|
|
||||||
'@eslint-community/regexpp@4.12.1': {}
|
'@eslint-community/regexpp@4.12.1': {}
|
||||||
|
|
||||||
'@eslint/config-array@0.20.0':
|
'@eslint/config-array@0.20.0':
|
||||||
@@ -6723,6 +6730,8 @@ snapshots:
|
|||||||
|
|
||||||
'@eslint/js@9.30.0': {}
|
'@eslint/js@9.30.0': {}
|
||||||
|
|
||||||
|
'@eslint/js@9.30.1': {}
|
||||||
|
|
||||||
'@eslint/object-schema@2.1.6': {}
|
'@eslint/object-schema@2.1.6': {}
|
||||||
|
|
||||||
'@eslint/plugin-kit@0.3.1':
|
'@eslint/plugin-kit@0.3.1':
|
||||||
@@ -6945,10 +6954,10 @@ snapshots:
|
|||||||
'@tybys/wasm-util': 0.9.0
|
'@tybys/wasm-util': 0.9.0
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@next-auth/prisma-adapter@1.0.7(@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3))(next-auth@4.24.11(next@15.3.4(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))':
|
'@next-auth/prisma-adapter@1.0.7(@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3))(next-auth@4.24.11(next@15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@prisma/client': 6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3)
|
'@prisma/client': 6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3)
|
||||||
next-auth: 4.24.11(next@15.3.4(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
next-auth: 4.24.11(next@15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||||
|
|
||||||
'@next/env@15.3.4': {}
|
'@next/env@15.3.4': {}
|
||||||
|
|
||||||
@@ -8734,14 +8743,31 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/regexpp': 4.12.1
|
||||||
|
'@typescript-eslint/parser': 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/scope-manager': 8.36.0
|
||||||
|
'@typescript-eslint/type-utils': 8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/utils': 8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/visitor-keys': 8.36.0
|
||||||
|
eslint: 9.28.0(jiti@2.4.2)
|
||||||
|
graphemer: 1.4.0
|
||||||
|
ignore: 7.0.5
|
||||||
|
natural-compare: 1.4.0
|
||||||
|
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@typescript-eslint/parser': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/parser': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/scope-manager': 8.35.0
|
'@typescript-eslint/scope-manager': 8.36.0
|
||||||
'@typescript-eslint/type-utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/type-utils': 8.36.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/utils': 8.36.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.35.0
|
'@typescript-eslint/visitor-keys': 8.36.0
|
||||||
eslint: 9.30.0(jiti@2.4.2)
|
eslint: 9.30.0(jiti@2.4.2)
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
ignore: 7.0.5
|
ignore: 7.0.5
|
||||||
@@ -8751,15 +8777,15 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.35.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/regexpp': 4.12.1
|
'@eslint-community/regexpp': 4.12.1
|
||||||
'@typescript-eslint/parser': 8.35.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/parser': 8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/scope-manager': 8.36.0
|
'@typescript-eslint/scope-manager': 8.36.0
|
||||||
'@typescript-eslint/type-utils': 8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/type-utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/utils': 8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/visitor-keys': 8.36.0
|
'@typescript-eslint/visitor-keys': 8.36.0
|
||||||
eslint: 9.28.0(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
graphemer: 1.4.0
|
graphemer: 1.4.0
|
||||||
ignore: 7.0.5
|
ignore: 7.0.5
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
@@ -8792,18 +8818,6 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.35.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)':
|
|
||||||
dependencies:
|
|
||||||
'@typescript-eslint/scope-manager': 8.35.0
|
|
||||||
'@typescript-eslint/types': 8.35.0
|
|
||||||
'@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3)
|
|
||||||
'@typescript-eslint/visitor-keys': 8.35.0
|
|
||||||
debug: 4.4.1(supports-color@5.5.0)
|
|
||||||
eslint: 9.28.0(jiti@2.4.2)
|
|
||||||
typescript: 5.8.3
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
'@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/scope-manager': 8.35.0
|
'@typescript-eslint/scope-manager': 8.35.0
|
||||||
@@ -8816,6 +8830,18 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/parser@8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/scope-manager': 8.35.0
|
||||||
|
'@typescript-eslint/types': 8.35.0
|
||||||
|
'@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/visitor-keys': 8.35.0
|
||||||
|
debug: 4.4.1(supports-color@5.5.0)
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/project-service@8.33.1(typescript@5.8.3)':
|
'@typescript-eslint/project-service@8.33.1(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3)
|
'@typescript-eslint/tsconfig-utils': 8.36.0(typescript@5.8.3)
|
||||||
@@ -8892,10 +8918,21 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/type-utils@8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3)
|
'@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3)
|
||||||
'@typescript-eslint/utils': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/utils': 8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
debug: 4.4.1(supports-color@5.5.0)
|
||||||
|
eslint: 9.28.0(jiti@2.4.2)
|
||||||
|
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/type-utils@8.36.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/utils': 8.36.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
debug: 4.4.1(supports-color@5.5.0)
|
debug: 4.4.1(supports-color@5.5.0)
|
||||||
eslint: 9.30.0(jiti@2.4.2)
|
eslint: 9.30.0(jiti@2.4.2)
|
||||||
ts-api-utils: 2.1.0(typescript@5.8.3)
|
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||||
@@ -8903,12 +8940,12 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/type-utils@8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/type-utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3)
|
'@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3)
|
||||||
'@typescript-eslint/utils': 8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
debug: 4.4.1(supports-color@5.5.0)
|
debug: 4.4.1(supports-color@5.5.0)
|
||||||
eslint: 9.28.0(jiti@2.4.2)
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
ts-api-utils: 2.1.0(typescript@5.8.3)
|
ts-api-utils: 2.1.0(typescript@5.8.3)
|
||||||
typescript: 5.8.3
|
typescript: 5.8.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -8990,17 +9027,6 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
|
|
||||||
dependencies:
|
|
||||||
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
|
|
||||||
'@typescript-eslint/scope-manager': 8.35.0
|
|
||||||
'@typescript-eslint/types': 8.35.0
|
|
||||||
'@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3)
|
|
||||||
eslint: 9.30.0(jiti@2.4.2)
|
|
||||||
typescript: 5.8.3
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
'@typescript-eslint/utils@8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)':
|
'@typescript-eslint/utils@8.36.0(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2))
|
'@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@2.4.2))
|
||||||
@@ -9012,6 +9038,28 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/utils@8.36.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0(jiti@2.4.2))
|
||||||
|
'@typescript-eslint/scope-manager': 8.36.0
|
||||||
|
'@typescript-eslint/types': 8.36.0
|
||||||
|
'@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3)
|
||||||
|
eslint: 9.30.0(jiti@2.4.2)
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
|
'@typescript-eslint/utils@8.36.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)':
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
'@typescript-eslint/scope-manager': 8.36.0
|
||||||
|
'@typescript-eslint/types': 8.36.0
|
||||||
|
'@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3)
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@typescript-eslint/visitor-keys@8.33.1':
|
'@typescript-eslint/visitor-keys@8.33.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/types': 8.33.1
|
'@typescript-eslint/types': 8.33.1
|
||||||
@@ -10109,7 +10157,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@next/eslint-plugin-next': 15.3.4
|
'@next/eslint-plugin-next': 15.3.4
|
||||||
'@rushstack/eslint-patch': 1.12.0
|
'@rushstack/eslint-patch': 1.12.0
|
||||||
'@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/eslint-plugin': 8.36.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
'@typescript-eslint/parser': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
'@typescript-eslint/parser': 8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3)
|
||||||
eslint: 9.30.0(jiti@2.4.2)
|
eslint: 9.30.0(jiti@2.4.2)
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
@@ -10125,6 +10173,26 @@ snapshots:
|
|||||||
- eslint-plugin-import-x
|
- eslint-plugin-import-x
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
eslint-config-next@15.3.4(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3):
|
||||||
|
dependencies:
|
||||||
|
'@next/eslint-plugin-next': 15.3.4
|
||||||
|
'@rushstack/eslint-patch': 1.12.0
|
||||||
|
'@typescript-eslint/eslint-plugin': 8.36.0(@typescript-eslint/parser@8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
'@typescript-eslint/parser': 8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
eslint-import-resolver-node: 0.3.9
|
||||||
|
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
eslint-plugin-react: 7.37.5(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
eslint-plugin-react-hooks: 5.2.0(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
optionalDependencies:
|
||||||
|
typescript: 5.8.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- eslint-import-resolver-webpack
|
||||||
|
- eslint-plugin-import-x
|
||||||
|
- supports-color
|
||||||
|
|
||||||
eslint-config-prettier@9.1.0(eslint@9.28.0(jiti@2.4.2)):
|
eslint-config-prettier@9.1.0(eslint@9.28.0(jiti@2.4.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.28.0(jiti@2.4.2)
|
eslint: 9.28.0(jiti@2.4.2)
|
||||||
@@ -10152,6 +10220,21 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2)):
|
||||||
|
dependencies:
|
||||||
|
'@nolyfill/is-core-module': 1.0.39
|
||||||
|
debug: 4.4.1(supports-color@5.5.0)
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
get-tsconfig: 4.10.1
|
||||||
|
is-bun-module: 2.0.0
|
||||||
|
stable-hash: 0.0.5
|
||||||
|
tinyglobby: 0.2.14
|
||||||
|
unrs-resolver: 1.9.2
|
||||||
|
optionalDependencies:
|
||||||
|
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.0(jiti@2.4.2)):
|
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.0(jiti@2.4.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
@@ -10163,6 +10246,17 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)):
|
||||||
|
dependencies:
|
||||||
|
debug: 3.2.7
|
||||||
|
optionalDependencies:
|
||||||
|
'@typescript-eslint/parser': 8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
eslint-import-resolver-node: 0.3.9
|
||||||
|
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.0(jiti@2.4.2)):
|
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.0(jiti@2.4.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rtsao/scc': 1.1.0
|
'@rtsao/scc': 1.1.0
|
||||||
@@ -10192,6 +10286,35 @@ snapshots:
|
|||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)):
|
||||||
|
dependencies:
|
||||||
|
'@rtsao/scc': 1.1.0
|
||||||
|
array-includes: 3.1.9
|
||||||
|
array.prototype.findlastindex: 1.2.6
|
||||||
|
array.prototype.flat: 1.3.3
|
||||||
|
array.prototype.flatmap: 1.3.3
|
||||||
|
debug: 3.2.7
|
||||||
|
doctrine: 2.1.0
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
eslint-import-resolver-node: 0.3.9
|
||||||
|
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
hasown: 2.0.2
|
||||||
|
is-core-module: 2.16.1
|
||||||
|
is-glob: 4.0.3
|
||||||
|
minimatch: 3.1.2
|
||||||
|
object.fromentries: 2.0.8
|
||||||
|
object.groupby: 1.0.3
|
||||||
|
object.values: 1.2.1
|
||||||
|
semver: 6.3.1
|
||||||
|
string.prototype.trimend: 1.0.9
|
||||||
|
tsconfig-paths: 3.15.0
|
||||||
|
optionalDependencies:
|
||||||
|
'@typescript-eslint/parser': 8.35.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- eslint-import-resolver-typescript
|
||||||
|
- eslint-import-resolver-webpack
|
||||||
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-jsx-a11y@6.10.2(eslint@9.30.0(jiti@2.4.2)):
|
eslint-plugin-jsx-a11y@6.10.2(eslint@9.30.0(jiti@2.4.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
aria-query: 5.3.2
|
aria-query: 5.3.2
|
||||||
@@ -10211,6 +10334,25 @@ snapshots:
|
|||||||
safe-regex-test: 1.1.0
|
safe-regex-test: 1.1.0
|
||||||
string.prototype.includes: 2.0.1
|
string.prototype.includes: 2.0.1
|
||||||
|
|
||||||
|
eslint-plugin-jsx-a11y@6.10.2(eslint@9.30.1(jiti@2.4.2)):
|
||||||
|
dependencies:
|
||||||
|
aria-query: 5.3.2
|
||||||
|
array-includes: 3.1.9
|
||||||
|
array.prototype.flatmap: 1.3.3
|
||||||
|
ast-types-flow: 0.0.8
|
||||||
|
axe-core: 4.10.3
|
||||||
|
axobject-query: 4.1.0
|
||||||
|
damerau-levenshtein: 1.0.8
|
||||||
|
emoji-regex: 9.2.2
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
hasown: 2.0.2
|
||||||
|
jsx-ast-utils: 3.3.5
|
||||||
|
language-tags: 1.0.9
|
||||||
|
minimatch: 3.1.2
|
||||||
|
object.fromentries: 2.0.8
|
||||||
|
safe-regex-test: 1.1.0
|
||||||
|
string.prototype.includes: 2.0.1
|
||||||
|
|
||||||
eslint-plugin-only-warn@1.1.0: {}
|
eslint-plugin-only-warn@1.1.0: {}
|
||||||
|
|
||||||
eslint-plugin-react-hooks@5.2.0(eslint@9.28.0(jiti@2.4.2)):
|
eslint-plugin-react-hooks@5.2.0(eslint@9.28.0(jiti@2.4.2)):
|
||||||
@@ -10221,6 +10363,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
eslint: 9.30.0(jiti@2.4.2)
|
eslint: 9.30.0(jiti@2.4.2)
|
||||||
|
|
||||||
|
eslint-plugin-react-hooks@5.2.0(eslint@9.30.1(jiti@2.4.2)):
|
||||||
|
dependencies:
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
|
||||||
eslint-plugin-react@7.37.5(eslint@9.28.0(jiti@2.4.2)):
|
eslint-plugin-react@7.37.5(eslint@9.28.0(jiti@2.4.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
array-includes: 3.1.9
|
array-includes: 3.1.9
|
||||||
@@ -10265,6 +10411,28 @@ snapshots:
|
|||||||
string.prototype.matchall: 4.0.12
|
string.prototype.matchall: 4.0.12
|
||||||
string.prototype.repeat: 1.0.0
|
string.prototype.repeat: 1.0.0
|
||||||
|
|
||||||
|
eslint-plugin-react@7.37.5(eslint@9.30.1(jiti@2.4.2)):
|
||||||
|
dependencies:
|
||||||
|
array-includes: 3.1.9
|
||||||
|
array.prototype.findlast: 1.2.5
|
||||||
|
array.prototype.flatmap: 1.3.3
|
||||||
|
array.prototype.tosorted: 1.1.4
|
||||||
|
doctrine: 2.1.0
|
||||||
|
es-iterator-helpers: 1.2.1
|
||||||
|
eslint: 9.30.1(jiti@2.4.2)
|
||||||
|
estraverse: 5.3.0
|
||||||
|
hasown: 2.0.2
|
||||||
|
jsx-ast-utils: 3.3.5
|
||||||
|
minimatch: 3.1.2
|
||||||
|
object.entries: 1.1.9
|
||||||
|
object.fromentries: 2.0.8
|
||||||
|
object.values: 1.2.1
|
||||||
|
prop-types: 15.8.1
|
||||||
|
resolve: 2.0.0-next.5
|
||||||
|
semver: 6.3.1
|
||||||
|
string.prototype.matchall: 4.0.12
|
||||||
|
string.prototype.repeat: 1.0.0
|
||||||
|
|
||||||
eslint-plugin-turbo@2.5.4(eslint@9.28.0(jiti@2.4.2))(turbo@2.5.4):
|
eslint-plugin-turbo@2.5.4(eslint@9.28.0(jiti@2.4.2))(turbo@2.5.4):
|
||||||
dependencies:
|
dependencies:
|
||||||
dotenv: 16.0.3
|
dotenv: 16.0.3
|
||||||
@@ -10376,6 +10544,48 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
eslint@9.30.1(jiti@2.4.2):
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2))
|
||||||
|
'@eslint-community/regexpp': 4.12.1
|
||||||
|
'@eslint/config-array': 0.21.0
|
||||||
|
'@eslint/config-helpers': 0.3.0
|
||||||
|
'@eslint/core': 0.14.0
|
||||||
|
'@eslint/eslintrc': 3.3.1
|
||||||
|
'@eslint/js': 9.30.1
|
||||||
|
'@eslint/plugin-kit': 0.3.3
|
||||||
|
'@humanfs/node': 0.16.6
|
||||||
|
'@humanwhocodes/module-importer': 1.0.1
|
||||||
|
'@humanwhocodes/retry': 0.4.3
|
||||||
|
'@types/estree': 1.0.8
|
||||||
|
'@types/json-schema': 7.0.15
|
||||||
|
ajv: 6.12.6
|
||||||
|
chalk: 4.1.2
|
||||||
|
cross-spawn: 7.0.6
|
||||||
|
debug: 4.4.1(supports-color@5.5.0)
|
||||||
|
escape-string-regexp: 4.0.0
|
||||||
|
eslint-scope: 8.4.0
|
||||||
|
eslint-visitor-keys: 4.2.1
|
||||||
|
espree: 10.4.0
|
||||||
|
esquery: 1.6.0
|
||||||
|
esutils: 2.0.3
|
||||||
|
fast-deep-equal: 3.1.3
|
||||||
|
file-entry-cache: 8.0.0
|
||||||
|
find-up: 5.0.0
|
||||||
|
glob-parent: 6.0.2
|
||||||
|
ignore: 5.3.2
|
||||||
|
imurmurhash: 0.1.4
|
||||||
|
is-glob: 4.0.3
|
||||||
|
json-stable-stringify-without-jsonify: 1.0.1
|
||||||
|
lodash.merge: 4.6.2
|
||||||
|
minimatch: 3.1.2
|
||||||
|
natural-compare: 1.4.0
|
||||||
|
optionator: 0.9.4
|
||||||
|
optionalDependencies:
|
||||||
|
jiti: 2.4.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
espree@10.3.0:
|
espree@10.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
acorn: 8.14.1
|
acorn: 8.14.1
|
||||||
@@ -11676,7 +11886,7 @@ snapshots:
|
|||||||
|
|
||||||
neo-async@2.6.2: {}
|
neo-async@2.6.2: {}
|
||||||
|
|
||||||
next-auth@4.24.11(next@15.3.4(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
|
next-auth@4.24.11(next@15.3.4(@babel/core@7.27.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.27.6
|
'@babel/runtime': 7.27.6
|
||||||
'@panva/hkdf': 1.2.1
|
'@panva/hkdf': 1.2.1
|
||||||
|
|||||||
Reference in New Issue
Block a user