Improvements: remove dead config, fix ESM, add URL validation, unify types, add missing logging
- Remove .prettierrc (dead config, Biome replaces Prettier) - Rename lighthouserc.json to lighthouserc.cjs with module.exports for ESM compat - Add logger.warn to empty catch blocks in auth, register, site-settings, prisma-cache, redis, security, rate-limit - Unify ActionResult type: action-helper.ts uses 'ok' consistent with safe-action-shared.ts - Add noUnusedLocals + noUnusedParameters to tsconfig + fix 25 pre-existing unused vars - Replace barrel export src/types/index.ts with direct @/types/common imports - Make trustHost conditional (development only) in auth.ts - Add pre-flight URL validation to update-Nitrov3.sh to catch image.library.url misconfigurations - Improve NITRO_IMAGE_LIBRARY_URL content validation in pre-flight & post-compute checks
This commit is contained in:
1 parent
b922f6d49f
commit
17847545dd
292 files changed
+69195
-67915
No files matched your search
@@ -190,11 +190,10 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="destructive" className="w-full"
|
||||
variant="destructive"
|
||||
className="w-full"
|
||||
disabled={
|
||||
isPending ||
|
||||
!disconnect.userId ||
|
||||
!disconnect.username.trim()
|
||||
isPending || !disconnect.userId || !disconnect.username.trim()
|
||||
}
|
||||
onClick={() =>
|
||||
run(
|
||||
@@ -249,10 +248,9 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
disabled={
|
||||
isPending || !alert.userId || !alert.message.trim()
|
||||
}
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !alert.userId || !alert.message.trim()}
|
||||
onClick={() =>
|
||||
run(
|
||||
() =>
|
||||
@@ -305,7 +303,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !forward.userId || !forward.roomId}
|
||||
onClick={() =>
|
||||
run(
|
||||
@@ -317,8 +316,7 @@ export function CommandocentrumControls() {
|
||||
{
|
||||
successMessage: "User forwarded.",
|
||||
errorMessage: RCON_ERROR,
|
||||
onSuccess: () =>
|
||||
setForward({ userId: "", roomId: "" }),
|
||||
onSuccess: () => setForward({ userId: "", roomId: "" }),
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -362,7 +360,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !credits.userId || !credits.credits}
|
||||
onClick={() =>
|
||||
run(
|
||||
@@ -374,8 +373,7 @@ export function CommandocentrumControls() {
|
||||
{
|
||||
successMessage: "Credits sent.",
|
||||
errorMessage: RCON_ERROR,
|
||||
onSuccess: () =>
|
||||
setCredits({ userId: "", credits: "" }),
|
||||
onSuccess: () => setCredits({ userId: "", credits: "" }),
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -417,7 +415,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !duckets.userId || !duckets.amount}
|
||||
onClick={() =>
|
||||
run(
|
||||
@@ -429,8 +428,7 @@ export function CommandocentrumControls() {
|
||||
{
|
||||
successMessage: "Duckets sent.",
|
||||
errorMessage: RCON_ERROR,
|
||||
onSuccess: () =>
|
||||
setDuckets({ userId: "", amount: "" }),
|
||||
onSuccess: () => setDuckets({ userId: "", amount: "" }),
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -472,7 +470,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !diamonds.userId || !diamonds.amount}
|
||||
onClick={() =>
|
||||
run(
|
||||
@@ -484,8 +483,7 @@ export function CommandocentrumControls() {
|
||||
{
|
||||
successMessage: "Diamonds sent.",
|
||||
errorMessage: RCON_ERROR,
|
||||
onSuccess: () =>
|
||||
setDiamonds({ userId: "", amount: "" }),
|
||||
onSuccess: () => setDiamonds({ userId: "", amount: "" }),
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -529,7 +527,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !badge.userId || !badge.badge.trim()}
|
||||
onClick={() =>
|
||||
run(
|
||||
@@ -583,7 +582,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !motto.userId || !motto.motto.trim()}
|
||||
onClick={() =>
|
||||
run(
|
||||
@@ -595,8 +595,7 @@ export function CommandocentrumControls() {
|
||||
{
|
||||
successMessage: "Motto updated.",
|
||||
errorMessage: RCON_ERROR,
|
||||
onSuccess: () =>
|
||||
setMottoForm({ userId: "", motto: "" }),
|
||||
onSuccess: () => setMottoForm({ userId: "", motto: "" }),
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -639,7 +638,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !rank.userId || rank.rank === ""}
|
||||
onClick={() =>
|
||||
run(
|
||||
@@ -695,7 +695,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={
|
||||
isPending || !command.userId || !command.command.trim()
|
||||
}
|
||||
@@ -709,8 +710,7 @@ export function CommandocentrumControls() {
|
||||
{
|
||||
successMessage: "Command executed.",
|
||||
errorMessage: RCON_ERROR,
|
||||
onSuccess: () =>
|
||||
setCommand({ userId: "", command: "" }),
|
||||
onSuccess: () => setCommand({ userId: "", command: "" }),
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -763,7 +763,8 @@ export function CommandocentrumControls() {
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
variant="default" className="w-full"
|
||||
variant="default"
|
||||
className="w-full"
|
||||
disabled={isPending || !gift.userId || !gift.itemId}
|
||||
onClick={() =>
|
||||
run(
|
||||
|
||||
@@ -7,9 +7,9 @@ import {
|
||||
OnlineUsersWidget,
|
||||
StatusCard,
|
||||
} from "@/components/admin/dashboard";
|
||||
import { formatDate } from "@/lib/format-date";
|
||||
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { formatDate } from "@/lib/format-date";
|
||||
import { rcon } from "@/lib/services/rcon";
|
||||
import { siteSettings } from "@/lib/services/site-settings";
|
||||
import { CommandocentrumControls } from "./commandocentrum-controls";
|
||||
@@ -268,7 +268,10 @@ export default async function CommandoCentrum() {
|
||||
return (
|
||||
<tr key={e.id}>
|
||||
<td className="text-sm theme-text-muted dark:theme-text-muted whitespace-nowrap">
|
||||
{formatDate(e.timestamp ? new Date(e.timestamp * 1000) : null, "datetime-seconds")}
|
||||
{formatDate(
|
||||
e.timestamp ? new Date(e.timestamp * 1000) : null,
|
||||
"datetime-seconds",
|
||||
)}
|
||||
</td>
|
||||
<td>{e.type}</td>
|
||||
<td className="text-sm theme-text-muted dark:theme-text-muted whitespace-nowrap">
|
||||
|
||||
Reference in new issue
Block a user