diff --git a/src/frontend/package-lock.json b/src/frontend/package-lock.json index 31ffd48b..5b84ae48 100644 --- a/src/frontend/package-lock.json +++ b/src/frontend/package-lock.json @@ -44,7 +44,6 @@ "@tanstack/eslint-plugin-query": "5.100.14", "@tanstack/react-query-devtools": "5.100.14", "@types/humanize-duration": "3.27.4", - "@types/node": "24.12.4", "@types/react": "18.3.12", "@types/react-dom": "18.3.1", "@vitejs/plugin-react": "6.0.2", @@ -58,7 +57,7 @@ "postcss": "8.5.15", "prettier": "3.8.3", "rollup-plugin-visualizer": "7.0.1", - "typescript": "5.8.3", + "typescript": "6.0.3", "typescript-eslint": "8.60.1", "vite": "8.0.14", "vite-plugin-svgr": "5.2.0", @@ -12611,9 +12610,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "devOptional": true, "license": "Apache-2.0", "bin": { diff --git a/src/frontend/package.json b/src/frontend/package.json index a0bfe238..4fda522c 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -51,7 +51,6 @@ "@tanstack/eslint-plugin-query": "5.100.14", "@tanstack/react-query-devtools": "5.100.14", "@types/humanize-duration": "3.27.4", - "@types/node": "24.12.4", "@types/react": "18.3.12", "@types/react-dom": "18.3.1", "@vitejs/plugin-react": "6.0.2", @@ -65,7 +64,7 @@ "postcss": "8.5.15", "prettier": "3.8.3", "rollup-plugin-visualizer": "7.0.1", - "typescript": "5.8.3", + "typescript": "6.0.3", "typescript-eslint": "8.60.1", "vite": "8.0.14", "vite-plugin-svgr": "5.2.0", diff --git a/src/frontend/src/features/notifications/components/WaitingParticipantNotification.tsx b/src/frontend/src/features/notifications/components/WaitingParticipantNotification.tsx index bb4a1ec6..a4994c26 100644 --- a/src/frontend/src/features/notifications/components/WaitingParticipantNotification.tsx +++ b/src/frontend/src/features/notifications/components/WaitingParticipantNotification.tsx @@ -22,7 +22,7 @@ export const WaitingParticipantNotification = () => { keyPrefix: 'waitingParticipants', }) - const timerRef = useRef(null) + const timerRef = useRef | null>(null) const { isParticipantsOpen, toggleParticipants } = useSidePanel() const [showQuickActionsMessage, setShowQuickActionsMessage] = useState(false) const { waitingParticipants, handleParticipantEntry } = diff --git a/src/frontend/src/features/recording/components/ControlsButton.tsx b/src/frontend/src/features/recording/components/ControlsButton.tsx index 1c4669aa..70da8c06 100644 --- a/src/frontend/src/features/recording/components/ControlsButton.tsx +++ b/src/frontend/src/features/recording/components/ControlsButton.tsx @@ -57,7 +57,7 @@ export const ControlsButton = ({ const isRoomConnected = room.state == ConnectionState.Connected const [showSaving, setShowSaving] = useState(false) - const timeoutRef = useRef() + const timeoutRef = useRef>() const isSaving = statuses.isSaving || isPendingToStop const isDisabled = !isRoomConnected || statuses.isAnotherModeStarted diff --git a/src/frontend/src/features/recording/components/RequestRecording.tsx b/src/frontend/src/features/recording/components/RequestRecording.tsx index 7135355d..32bdd5cb 100644 --- a/src/frontend/src/features/recording/components/RequestRecording.tsx +++ b/src/frontend/src/features/recording/components/RequestRecording.tsx @@ -19,7 +19,7 @@ export const RequestRecording = ({ handleRequest, }: RequestRecordingProps) => { const [isDisabled, setIsDisabled] = useState(false) - const timeoutRef = useRef() + const timeoutRef = useRef>() useEffect(() => { return () => { diff --git a/src/frontend/src/features/rooms/hooks/useLobby.ts b/src/frontend/src/features/rooms/hooks/useLobby.ts index 0d10f850..c454d31f 100644 --- a/src/frontend/src/features/rooms/hooks/useLobby.ts +++ b/src/frontend/src/features/rooms/hooks/useLobby.ts @@ -20,7 +20,7 @@ export const useLobby = ({ onAccepted: (e: ApiRequestEntry) => void }) => { const [status, setStatus] = useState(ApiLobbyStatus.IDLE) - const waitingTimeoutRef = useRef(null) + const waitingTimeoutRef = useRef | null>(null) const clearWaitingTimeout = useCallback(() => { if (waitingTimeoutRef.current) { diff --git a/src/frontend/src/features/rooms/hooks/useWatchPermissions.ts b/src/frontend/src/features/rooms/hooks/useWatchPermissions.ts index 78e3c419..6868457c 100644 --- a/src/frontend/src/features/rooms/hooks/useWatchPermissions.ts +++ b/src/frontend/src/features/rooms/hooks/useWatchPermissions.ts @@ -7,7 +7,7 @@ const POLLING_TIME = 500 export const useWatchPermissions = () => { useEffect(() => { let cleanup: (() => void) | undefined - let intervalId: NodeJS.Timeout | undefined + let intervalId: ReturnType | undefined let isCancelled = false const checkPermissions = async () => { diff --git a/src/frontend/src/features/rooms/livekit/components/controls/HandToggle.tsx b/src/frontend/src/features/rooms/livekit/components/controls/HandToggle.tsx index 34a8d4dc..d0640db5 100644 --- a/src/frontend/src/features/rooms/livekit/components/controls/HandToggle.tsx +++ b/src/frontend/src/features/rooms/livekit/components/controls/HandToggle.tsx @@ -22,7 +22,7 @@ export const HandToggle = () => { }) const isSpeaking = room.localParticipant.isSpeaking - const speakingTimerRef = useRef(null) + const speakingTimerRef = useRef | null>(null) const [hasShownToast, setHasShownToast] = useState(false) const resetToastState = () => { diff --git a/src/frontend/src/hooks/useRateLimiter.ts b/src/frontend/src/hooks/useRateLimiter.ts index 82ff8cda..33e1a940 100644 --- a/src/frontend/src/hooks/useRateLimiter.ts +++ b/src/frontend/src/hooks/useRateLimiter.ts @@ -14,7 +14,9 @@ export default function useRateLimiter any>({ windowMs = 1000, }: RateLimiterProps) { const callsCountRef = useRef(0) - const resetTimeoutRef = useRef(undefined) + const resetTimeoutRef = useRef | undefined>( + undefined + ) const rateLimitedFn = useCallback( (...args: Parameters) => { diff --git a/src/frontend/src/hooks/useSyncAfterDelay.ts b/src/frontend/src/hooks/useSyncAfterDelay.ts index 32eddded..021a2396 100644 --- a/src/frontend/src/hooks/useSyncAfterDelay.ts +++ b/src/frontend/src/hooks/useSyncAfterDelay.ts @@ -8,7 +8,7 @@ import { useEffect, useRef, useState } from 'react' */ export function useSyncAfterDelay(value: T, waitFor: number = 300) { const valueRef = useRef(value) - const timeoutRef = useRef() + const timeoutRef = useRef>() const [syncValue, setSyncValue] = useState() useEffect(() => { diff --git a/src/frontend/src/primitives/Icon.tsx b/src/frontend/src/primitives/Icon.tsx index 9f64b095..cc5d6c50 100644 --- a/src/frontend/src/primitives/Icon.tsx +++ b/src/frontend/src/primitives/Icon.tsx @@ -56,7 +56,7 @@ export const Icon = ({ name, ...props }: IconProps) => { const SvgIcon = icons[name] if (!SvgIcon) { - if (process.env.NODE_ENV !== 'production') { + if (import.meta.env.NODE_ENV !== 'production') { console.warn( `[Icon] Unknown icon name: "${name}". Available: ${Object.keys(icons).join(', ')}` )