diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 5b7342607..866c1f3f6 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -1,8 +1,8 @@ import { serve } from "@hono/node-server"; -import { Hono } from "hono"; import { config } from "dotenv"; -import { validateLemonSqueezyLicense } from "./utils"; +import { Hono } from "hono"; import { cors } from "hono/cors"; +import { validateLemonSqueezyLicense } from "./utils"; config(); diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json index 667b7e7e6..68a9e8f04 100644 --- a/apps/api/tsconfig.json +++ b/apps/api/tsconfig.json @@ -1,14 +1,12 @@ { - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "moduleResolution": "Bundler", - "strict": true, - "skipLibCheck": true, - "types": [ - "node" - ], - "jsx": "react-jsx", - "jsxImportSource": "hono/jsx", - } -} \ No newline at end of file + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "skipLibCheck": true, + "types": ["node"], + "jsx": "react-jsx", + "jsxImportSource": "hono/jsx" + } +} diff --git a/apps/dokploy/__test__/requests/request.test.ts b/apps/dokploy/__test__/requests/request.test.ts index 064868d62..25eee9b9d 100644 --- a/apps/dokploy/__test__/requests/request.test.ts +++ b/apps/dokploy/__test__/requests/request.test.ts @@ -1,5 +1,5 @@ -import { processLogs, parseRawConfig } from "@/server/utils/access-log/utils"; -import { describe, it, expect } from "vitest"; +import { parseRawConfig, processLogs } from "@/server/utils/access-log/utils"; +import { describe, expect, it } from "vitest"; const sampleLogEntry = `{"ClientAddr":"172.19.0.1:56732","ClientHost":"172.19.0.1","ClientPort":"56732","ClientUsername":"-","DownstreamContentSize":0,"DownstreamStatus":304,"Duration":14729375,"OriginContentSize":0,"OriginDuration":14051833,"OriginStatus":304,"Overhead":677542,"RequestAddr":"s222-umami-c381af.traefik.me","RequestContentSize":0,"RequestCount":122,"RequestHost":"s222-umami-c381af.traefik.me","RequestMethod":"GET","RequestPath":"/dashboard?_rsc=1rugv","RequestPort":"-","RequestProtocol":"HTTP/1.1","RequestScheme":"http","RetryAttempts":0,"RouterName":"s222-umami-60e104-47-web@docker","ServiceAddr":"10.0.1.15:3000","ServiceName":"s222-umami-60e104-47-web@docker","ServiceURL":{"Scheme":"http","Opaque":"","User":null,"Host":"10.0.1.15:3000","Path":"","RawPath":"","ForceQuery":false,"RawQuery":"","Fragment":"","RawFragment":""},"StartLocal":"2024-08-25T04:34:37.306691884Z","StartUTC":"2024-08-25T04:34:37.306691884Z","entryPointName":"web","level":"info","msg":"","time":"2024-08-25T04:34:37Z"}`; describe("processLogs", () => { diff --git a/apps/dokploy/components/dashboard/requests/columns.tsx b/apps/dokploy/components/dashboard/requests/columns.tsx index 4e1c749a4..523e97bf5 100644 --- a/apps/dokploy/components/dashboard/requests/columns.tsx +++ b/apps/dokploy/components/dashboard/requests/columns.tsx @@ -1,10 +1,10 @@ +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; import type { ColumnDef } from "@tanstack/react-table"; +import { format } from "date-fns"; import { ArrowUpDown } from "lucide-react"; import * as React from "react"; -import { Button } from "@/components/ui/button"; -import { Badge } from "@/components/ui/badge"; import type { LogEntry } from "./show-requests"; -import { format } from "date-fns"; export const getStatusColor = (status: number) => { if (status >= 100 && status < 200) { diff --git a/apps/dokploy/components/dashboard/requests/request-distribution-chart.tsx b/apps/dokploy/components/dashboard/requests/request-distribution-chart.tsx index 4d3b20ff4..fd47ddb76 100644 --- a/apps/dokploy/components/dashboard/requests/request-distribution-chart.tsx +++ b/apps/dokploy/components/dashboard/requests/request-distribution-chart.tsx @@ -1,3 +1,9 @@ +import { + type ChartConfig, + ChartContainer, + ChartTooltip, + ChartTooltipContent, +} from "@/components/ui/chart"; import { api } from "@/utils/api"; import { Area, @@ -7,12 +13,6 @@ import { XAxis, YAxis, } from "recharts"; -import { - type ChartConfig, - ChartContainer, - ChartTooltip, - ChartTooltipContent, -} from "@/components/ui/chart"; const chartConfig = { views: { diff --git a/apps/dokploy/components/dashboard/requests/requests-table.tsx b/apps/dokploy/components/dashboard/requests/requests-table.tsx index f1b140b78..cd2949c34 100644 --- a/apps/dokploy/components/dashboard/requests/requests-table.tsx +++ b/apps/dokploy/components/dashboard/requests/requests-table.tsx @@ -1,24 +1,13 @@ -import { api } from "@/utils/api"; -import { - type SortingState, - type PaginationState, - getCoreRowModel, - getFilteredRowModel, - getSortedRowModel, - useReactTable, - type ColumnFiltersState, - type VisibilityState, - flexRender, -} from "@tanstack/react-table"; -import { useMemo, useState } from "react"; -import type { LogEntry } from "./show-requests"; import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; +import { Input } from "@/components/ui/input"; +import { ScrollArea } from "@/components/ui/scroll-area"; import { Sheet, SheetContent, @@ -34,23 +23,34 @@ import { TableHeader, TableRow, } from "@/components/ui/table"; -import { columns, getStatusColor } from "./columns"; -import { Button } from "@/components/ui/button"; -import { Input } from "@/components/ui/input"; +import { api } from "@/utils/api"; import { + type ColumnFiltersState, + type PaginationState, + type SortingState, + type VisibilityState, + flexRender, + getCoreRowModel, + getFilteredRowModel, + getSortedRowModel, + useReactTable, +} from "@tanstack/react-table"; +import copy from "copy-to-clipboard"; +import { + CheckCircle2Icon, ChevronDown, Copy, Download, - InfoIcon, - CheckCircle2Icon, - TrendingUpIcon, Globe, + InfoIcon, Server, + TrendingUpIcon, } from "lucide-react"; -import { ScrollArea } from "@/components/ui/scroll-area"; -import { DataTableFacetedFilter } from "./status-request-filter"; -import copy from "copy-to-clipboard"; +import { useMemo, useState } from "react"; import { toast } from "sonner"; +import { columns, getStatusColor } from "./columns"; +import type { LogEntry } from "./show-requests"; +import { DataTableFacetedFilter } from "./status-request-filter"; export const priorities = [ { diff --git a/apps/dokploy/components/dashboard/requests/show-requests.tsx b/apps/dokploy/components/dashboard/requests/show-requests.tsx index c29069202..e510488a4 100644 --- a/apps/dokploy/components/dashboard/requests/show-requests.tsx +++ b/apps/dokploy/components/dashboard/requests/show-requests.tsx @@ -1,5 +1,4 @@ -import { api, type RouterOutputs } from "@/utils/api"; -import * as React from "react"; +import { Button } from "@/components/ui/button"; import { Card, CardContent, @@ -7,7 +6,8 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; +import { type RouterOutputs, api } from "@/utils/api"; +import * as React from "react"; import { toast } from "sonner"; import { RequestDistributionChart } from "./request-distribution-chart"; import { RequestsTable } from "./requests-table"; diff --git a/apps/dokploy/components/dashboard/requests/status-request-filter.tsx b/apps/dokploy/components/dashboard/requests/status-request-filter.tsx index f94745360..2dd8f0594 100644 --- a/apps/dokploy/components/dashboard/requests/status-request-filter.tsx +++ b/apps/dokploy/components/dashboard/requests/status-request-filter.tsx @@ -1,4 +1,5 @@ -import { cn } from "@/lib/utils"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; import { Command, CommandEmpty, @@ -14,8 +15,7 @@ import { PopoverTrigger, } from "@/components/ui/popover"; import { Separator } from "@/components/ui/separator"; -import { Badge } from "@/components/ui/badge"; -import { Button } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; import { CheckIcon, PlusCircle } from "lucide-react"; interface DataTableFacetedFilterProps { diff --git a/apps/dokploy/components/layouts/settings-layout.tsx b/apps/dokploy/components/layouts/settings-layout.tsx index 0c0c6ecfa..cfe600f4e 100644 --- a/apps/dokploy/components/layouts/settings-layout.tsx +++ b/apps/dokploy/components/layouts/settings-layout.tsx @@ -118,8 +118,8 @@ import { Activity, Bell, Database, - KeyIcon, GitBranch, + KeyIcon, KeyRound, type LucideIcon, Route, diff --git a/apps/dokploy/pages/dashboard/requests.tsx b/apps/dokploy/pages/dashboard/requests.tsx index 3ea739f52..5427cd70a 100644 --- a/apps/dokploy/pages/dashboard/requests.tsx +++ b/apps/dokploy/pages/dashboard/requests.tsx @@ -1,9 +1,9 @@ +import { ShowRequests } from "@/components/dashboard/requests/show-requests"; import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { validateRequest } from "@/server/auth/auth"; import type { GetServerSidePropsContext } from "next"; import type { ReactElement } from "react"; import * as React from "react"; -import { ShowRequests } from "@/components/dashboard/requests/show-requests"; export default function Requests() { return ; diff --git a/apps/dokploy/server/api/routers/settings.ts b/apps/dokploy/server/api/routers/settings.ts index 1dff8e8eb..f34778ee5 100644 --- a/apps/dokploy/server/api/routers/settings.ts +++ b/apps/dokploy/server/api/routers/settings.ts @@ -10,6 +10,8 @@ import { apiUpdateDockerCleanup, } from "@/server/db/schema"; import { initializeTraefik } from "@/server/setup/traefik-setup"; +import { logRotationManager } from "@/server/utils/access-log/handler"; +import { parseRawConfig, processLogs } from "@/server/utils/access-log/utils"; import { cleanStoppedContainers, cleanUpDockerBuilder, @@ -51,8 +53,6 @@ import { } from "../services/settings"; import { canAccessToTraefikFiles } from "../services/user"; import { adminProcedure, createTRPCRouter, protectedProcedure } from "../trpc"; -import { parseRawConfig, processLogs } from "@/server/utils/access-log/utils"; -import { logRotationManager } from "@/server/utils/access-log/handler"; export const settingsRouter = createTRPCRouter({ reloadServer: adminProcedure.mutation(async () => { diff --git a/apps/dokploy/server/utils/access-log/handler.ts b/apps/dokploy/server/utils/access-log/handler.ts index ceec9cb48..c7c5d71e3 100644 --- a/apps/dokploy/server/utils/access-log/handler.ts +++ b/apps/dokploy/server/utils/access-log/handler.ts @@ -1,7 +1,7 @@ -import { DYNAMIC_TRAEFIK_PATH } from "@/server/constants"; -import { createStream, type RotatingFileStream } from "rotating-file-stream"; -import { execAsync } from "../process/execAsync"; import { findAdmin, updateAdmin } from "@/server/api/services/admin"; +import { DYNAMIC_TRAEFIK_PATH } from "@/server/constants"; +import { type RotatingFileStream, createStream } from "rotating-file-stream"; +import { execAsync } from "../process/execAsync"; class LogRotationManager { private static instance: LogRotationManager;