From b9f989986a217bb6dfd69050e8d889ca4fa9f7f9 Mon Sep 17 00:00:00 2001 From: Kieran Date: Mon, 25 Dec 2023 19:54:49 +0000 Subject: [PATCH] Admin delete / tailwind --- VoidCat/Controllers/Admin/AdminController.cs | 6 +- VoidCat/Controllers/IndexController.cs | 5 +- VoidCat/spa/src/app/package.json | 3 + VoidCat/spa/src/app/postcss.config.js | 6 + VoidCat/spa/src/app/public/icons.svg | 31 +- VoidCat/spa/src/app/src/Admin/Admin.tsx | 11 +- .../src/Components/HomePage/FooterLinks.css | 20 - .../src/Components/HomePage/FooterLinks.tsx | 5 +- .../src/Components/HomePage/GlobalStats.css | 41 -- .../src/Components/HomePage/GlobalStats.tsx | 23 +- .../src/Components/HomePage/MetricsGraph.tsx | 40 +- .../src/app/src/Components/Shared/Icon.tsx | 13 +- .../app/src/Components/Shared/ImageGrid.css | 2 +- .../app/src/Components/Shared/ImageGrid.tsx | 8 +- VoidCat/spa/src/app/src/Pages/FilePreview.tsx | 6 +- VoidCat/spa/src/app/src/index.css | 3 + VoidCat/spa/src/app/tailwind.config.js | 12 + VoidCat/spa/src/app/vite.config.ts | 5 + VoidCat/spa/yarn.lock | 459 +++++++++++++++++- docker-compose.dev.yml | 8 +- 20 files changed, 554 insertions(+), 153 deletions(-) create mode 100644 VoidCat/spa/src/app/postcss.config.js delete mode 100644 VoidCat/spa/src/app/src/Components/HomePage/FooterLinks.css delete mode 100644 VoidCat/spa/src/app/src/Components/HomePage/GlobalStats.css create mode 100644 VoidCat/spa/src/app/tailwind.config.js diff --git a/VoidCat/Controllers/Admin/AdminController.cs b/VoidCat/Controllers/Admin/AdminController.cs index fb96c60..fed18c3 100644 --- a/VoidCat/Controllers/Admin/AdminController.cs +++ b/VoidCat/Controllers/Admin/AdminController.cs @@ -32,6 +32,7 @@ public class AdminController : Controller /// /// Page request /// + [HttpOptions] [HttpPost] [Route("file")] public async Task> ListFiles([FromBody] PagedRequest request) @@ -51,6 +52,7 @@ public class AdminController : Controller /// Delete a file from the system /// /// Id of the file to delete + [HttpOptions] [HttpDelete] [Route("file/{id}")] public async Task DeleteFile([FromRoute] string id) @@ -65,6 +67,7 @@ public class AdminController : Controller /// /// Page request /// + [HttpOptions] [HttpPost] [Route("users")] public async Task> ListUsers([FromBody] PagedRequest request) @@ -91,6 +94,7 @@ public class AdminController : Controller /// /// /// + [HttpOptions] [HttpPost] [Route("update-user")] public async Task UpdateUser([FromBody] AdminUpdateUser user) @@ -100,7 +104,7 @@ public class AdminController : Controller oldUser.Storage = user.Storage; oldUser.Email = user.Email; - + await _userStore.AdminUpdateUser(oldUser); return Ok(); } diff --git a/VoidCat/Controllers/IndexController.cs b/VoidCat/Controllers/IndexController.cs index 7bada84..f269d65 100644 --- a/VoidCat/Controllers/IndexController.cs +++ b/VoidCat/Controllers/IndexController.cs @@ -41,7 +41,10 @@ public class IndexController : Controller }; var indexPath = Path.Combine(_webHost.WebRootPath, "index.html"); - var indexContent = await System.IO.File.ReadAllTextAsync(indexPath); + + var indexContent = System.IO.File.Exists(indexPath) ? + await System.IO.File.ReadAllTextAsync(indexPath) + : string.Empty; var meta = (await _fileMetadata.Get(gid))?.ToMeta(false); var tags = new List>() diff --git a/VoidCat/spa/src/app/package.json b/VoidCat/spa/src/app/package.json index c479152..9a5a251 100644 --- a/VoidCat/spa/src/app/package.json +++ b/VoidCat/spa/src/app/package.json @@ -26,9 +26,12 @@ "@types/react-redux": "^7.1.26", "@types/sjcl": "^1.0.30", "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.16", "eslint": "^8.47.0", "eslint-config-react-app": "^7.0.1", + "postcss": "^8.4.32", "rollup-plugin-visualizer": "^5.11.0", + "tailwindcss": "^3.4.0", "typescript": "^5.3.3", "vite": "^5.0.10", "vite-plugin-pwa": "^0.17.4", diff --git a/VoidCat/spa/src/app/postcss.config.js b/VoidCat/spa/src/app/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/VoidCat/spa/src/app/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/VoidCat/spa/src/app/public/icons.svg b/VoidCat/spa/src/app/public/icons.svg index 302f8b6..965e2ce 100644 --- a/VoidCat/spa/src/app/public/icons.svg +++ b/VoidCat/spa/src/app/public/icons.svg @@ -1,41 +1,34 @@ - + - + - + - + - + - + - + - + - + + + + - \ No newline at end of file diff --git a/VoidCat/spa/src/app/src/Admin/Admin.tsx b/VoidCat/spa/src/app/src/Admin/Admin.tsx index c7ff352..4fc637a 100644 --- a/VoidCat/spa/src/app/src/Admin/Admin.tsx +++ b/VoidCat/spa/src/app/src/Admin/Admin.tsx @@ -12,6 +12,7 @@ import EditUser from "./EditUser"; import useApi from "@/Hooks/UseApi"; import { RootState } from "@/Store"; import ImageGrid from "@/Components/Shared/ImageGrid"; +import { IconButton } from "@/Components/Shared/Icon"; export function Admin() { const auth = useSelector((state: RootState) => state.login.jwt); @@ -45,7 +46,15 @@ export function Admin() { />

Files

- AdminApi.adminListFiles(r)} /> + AdminApi.adminListFiles(r)} + actions={(f) => <> + { + e.preventDefault(); + e.stopPropagation(); + deleteFile(f.id) + }} /> + } /> {editUser && ( diff --git a/VoidCat/spa/src/app/src/Components/HomePage/FooterLinks.css b/VoidCat/spa/src/app/src/Components/HomePage/FooterLinks.css deleted file mode 100644 index c99e57a..0000000 --- a/VoidCat/spa/src/app/src/Components/HomePage/FooterLinks.css +++ /dev/null @@ -1,20 +0,0 @@ -.footer { - margin-top: 15px; - text-align: center; -} - -.footer > a { - margin-left: 10px; - padding-right: 10px; - border-right: 1px solid; -} - -.footer > a:last-child { - border: none; -} - -.footer > a > img { - filter: invert(1); - vertical-align: middle; - height: 20px; -} diff --git a/VoidCat/spa/src/app/src/Components/HomePage/FooterLinks.tsx b/VoidCat/spa/src/app/src/Components/HomePage/FooterLinks.tsx index c49b296..0d85afc 100644 --- a/VoidCat/spa/src/app/src/Components/HomePage/FooterLinks.tsx +++ b/VoidCat/spa/src/app/src/Components/HomePage/FooterLinks.tsx @@ -1,4 +1,3 @@ -import "./FooterLinks.css"; import { useSelector } from "react-redux"; import { Link } from "react-router-dom"; @@ -8,7 +7,7 @@ export function FooterLinks() { const profile = useSelector((s: RootState) => s.login.profile); return ( -
+
Discord @@ -21,6 +20,6 @@ export function FooterLinks() { Donate {profile?.roles?.includes("Admin") ? Admin : null} -
+ ); } diff --git a/VoidCat/spa/src/app/src/Components/HomePage/GlobalStats.css b/VoidCat/spa/src/app/src/Components/HomePage/GlobalStats.css deleted file mode 100644 index 2b55732..0000000 --- a/VoidCat/spa/src/app/src/Components/HomePage/GlobalStats.css +++ /dev/null @@ -1,41 +0,0 @@ -.stats { - display: grid; - grid-auto-flow: column; - margin: 0 30px; - line-height: 32px; - text-align: center; -} - -.stats svg { - vertical-align: middle; - margin-right: 10px; -} - -.stats > div { -} - -@media (max-width: 900px) { - .stats { - margin: 0 5px; - font-size: 14px; - } - - .stats svg { - height: 16px; - width: 16px; - } - - .build-info { - width: 100vw; - } -} - -.build-info { - position: fixed; - left: 0; - bottom: 0; - color: #888; - text-align: center; - font-size: x-small; - padding: 10px; -} diff --git a/VoidCat/spa/src/app/src/Components/HomePage/GlobalStats.tsx b/VoidCat/spa/src/app/src/Components/HomePage/GlobalStats.tsx index 769241c..f147bba 100644 --- a/VoidCat/spa/src/app/src/Components/HomePage/GlobalStats.tsx +++ b/VoidCat/spa/src/app/src/Components/HomePage/GlobalStats.tsx @@ -1,6 +1,4 @@ -import "./GlobalStats.css"; -import { Fragment } from "react"; -import moment from "moment"; +import moment from "moment"; import { useSelector } from "react-redux"; import Icon from "@/Components/Shared/Icon"; @@ -11,32 +9,33 @@ export function GlobalStats() { let stats = useSelector((s: RootState) => s.info.info); return ( - -
-
+ <> +
+
{FormatBytes(stats?.bandwidth?.ingress ?? 0, 2)}
-
+
{FormatBytes(stats?.bandwidth?.egress ?? 0, 2)}
-
+
{FormatBytes(stats?.totalBytes ?? 0, 2)}
-
+
{stats?.count ?? 0}
-
+ + {stats?.buildInfo && ( -
+
{stats.buildInfo.version}-{stats.buildInfo.gitHash}
{moment(stats.buildInfo.buildTime).fromNow()}
)} - + ); } diff --git a/VoidCat/spa/src/app/src/Components/HomePage/MetricsGraph.tsx b/VoidCat/spa/src/app/src/Components/HomePage/MetricsGraph.tsx index 79b0bdb..0b49f56 100644 --- a/VoidCat/spa/src/app/src/Components/HomePage/MetricsGraph.tsx +++ b/VoidCat/spa/src/app/src/Components/HomePage/MetricsGraph.tsx @@ -1,4 +1,4 @@ -import { Bar, BarChart, Tooltip, XAxis } from "recharts"; +import { Bar, BarChart, ResponsiveContainer, Tooltip, XAxis } from "recharts"; import moment from "moment"; import { BandwidthPoint } from "@void-cat/api"; @@ -11,24 +11,24 @@ export function MetricsGraph({ metrics }: MetricsGraphProps) { if (!metrics || metrics.length === 0) return null; return ( - - `${moment(v).format("DD-MMM")}`} - /> - - FormatBytes(v as number)} - labelStyle={{ color: "#aaa" }} - itemStyle={{ color: "#eee" }} - contentStyle={{ backgroundColor: "#111" }} - /> - + + + `${moment(v).format("DD-MMM")}`} + /> + + FormatBytes(v as number)} + labelStyle={{ color: "#aaa" }} + itemStyle={{ color: "#eee" }} + contentStyle={{ backgroundColor: "#111" }} + /> + + ); } diff --git a/VoidCat/spa/src/app/src/Components/Shared/Icon.tsx b/VoidCat/spa/src/app/src/Components/Shared/Icon.tsx index 477cf21..07232dc 100644 --- a/VoidCat/spa/src/app/src/Components/Shared/Icon.tsx +++ b/VoidCat/spa/src/app/src/Components/Shared/Icon.tsx @@ -1,13 +1,11 @@ -import { MouseEventHandler } from "react"; - -type Props = { +export interface IconProps { name: string; size?: number; className?: string; - onClick?: MouseEventHandler; + onClick?: React.MouseEventHandler; }; -const Icon = (props: Props) => { +const Icon = (props: IconProps) => { const size = props.size || 20; const href = "/icons.svg#" + props.name; @@ -23,4 +21,9 @@ const Icon = (props: Props) => { ); }; +export function IconButton({onClick, ...props}: IconProps) { + return +} export default Icon; diff --git a/VoidCat/spa/src/app/src/Components/Shared/ImageGrid.css b/VoidCat/spa/src/app/src/Components/Shared/ImageGrid.css index 5006ef3..67969f4 100644 --- a/VoidCat/spa/src/app/src/Components/Shared/ImageGrid.css +++ b/VoidCat/spa/src/app/src/Components/Shared/ImageGrid.css @@ -18,4 +18,4 @@ .image-grid video, .image-grid audio { height: inherit; -} +} \ No newline at end of file diff --git a/VoidCat/spa/src/app/src/Components/Shared/ImageGrid.tsx b/VoidCat/spa/src/app/src/Components/Shared/ImageGrid.tsx index 9fe0d97..4cd9adc 100644 --- a/VoidCat/spa/src/app/src/Components/Shared/ImageGrid.tsx +++ b/VoidCat/spa/src/app/src/Components/Shared/ImageGrid.tsx @@ -8,7 +8,7 @@ import { PageSortOrder, VoidFileResponse, } from "@void-cat/api"; -import { useEffect, useState } from "react"; +import { useEffect, useState, ReactNode } from "react"; import { Link } from "react-router-dom"; import { useDispatch } from "react-redux"; @@ -17,6 +17,7 @@ import { PageSelector } from "./PageSelector"; interface ImageGridProps { loadPage: (req: PagedRequest) => Promise>; + actions?: (f: VoidFileResponse) => ReactNode } export default function ImageGrid(props: ImageGridProps) { @@ -104,8 +105,11 @@ export default function ImageGrid(props: ImageGridProps) { <>
{files?.results.map((v) => ( - + {renderPreview(v)} + {props.actions &&
+ {props.actions(v)} +
} ))}
diff --git a/VoidCat/spa/src/app/src/Pages/FilePreview.tsx b/VoidCat/spa/src/app/src/Pages/FilePreview.tsx index 125e1d6..ba65047 100644 --- a/VoidCat/spa/src/app/src/Pages/FilePreview.tsx +++ b/VoidCat/spa/src/app/src/Pages/FilePreview.tsx @@ -310,12 +310,12 @@ export function FilePreview() { {renderPayment()} {renderPreview()} {renderEncryptedDownload()} -
-
+
+
{FormatBytes(info?.bandwidth?.egress ?? 0, 2)}
-
+
{FormatBytes(info?.metadata?.size ?? 0, 2)}
diff --git a/VoidCat/spa/src/app/src/index.css b/VoidCat/spa/src/app/src/index.css index a4ae78a..cdb36fc 100644 --- a/VoidCat/spa/src/app/src/index.css +++ b/VoidCat/spa/src/app/src/index.css @@ -1,4 +1,7 @@ @import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:wght@400;700&display=swap"); +@tailwind base; +@tailwind components; +@tailwind utilities; body { margin: 0; diff --git a/VoidCat/spa/src/app/tailwind.config.js b/VoidCat/spa/src/app/tailwind.config.js new file mode 100644 index 0000000..ce6bad4 --- /dev/null +++ b/VoidCat/spa/src/app/tailwind.config.js @@ -0,0 +1,12 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./index.html", + "./src/**/*.{ts,tsx}", + ], + theme: { + extend: {}, + }, + plugins: [], +} + diff --git a/VoidCat/spa/src/app/vite.config.ts b/VoidCat/spa/src/app/vite.config.ts index cce37d9..818ebfa 100644 --- a/VoidCat/spa/src/app/vite.config.ts +++ b/VoidCat/spa/src/app/vite.config.ts @@ -30,4 +30,9 @@ export default defineConfig({ }, }, define: {}, + server:{ + proxy: { + "/d": "http://localhost:7195/" + } + } }); diff --git a/VoidCat/spa/yarn.lock b/VoidCat/spa/yarn.lock index 26a0656..42f2a48 100644 --- a/VoidCat/spa/yarn.lock +++ b/VoidCat/spa/yarn.lock @@ -12,6 +12,13 @@ __metadata: languageName: node linkType: hard +"@alloc/quick-lru@npm:^5.2.0": + version: 5.2.0 + resolution: "@alloc/quick-lru@npm:5.2.0" + checksum: bdc35758b552bcf045733ac047fb7f9a07c4678b944c641adfbd41f798b4b91fffd0fdc0df2578d9b0afc7b4d636aa6e110ead5d6281a2adc1ab90efd7f057f8 + languageName: node + linkType: hard + "@ampproject/remapping@npm:^2.2.0": version: 2.2.1 resolution: "@ampproject/remapping@npm:2.2.1" @@ -3714,9 +3721,11 @@ __metadata: "@types/sjcl": "npm:^1.0.30" "@vitejs/plugin-react": "npm:^4.2.1" "@void-cat/api": "npm:^1.0.10" + autoprefixer: "npm:^10.4.16" eslint: "npm:^8.47.0" eslint-config-react-app: "npm:^7.0.1" moment: "npm:^2.29.4" + postcss: "npm:^8.4.32" prop-types: "npm:^15.8.1" qrcode.react: "npm:^3.1.0" react: "npm:^18.2.0" @@ -3727,6 +3736,7 @@ __metadata: recharts: "npm:^2.1.10" rollup-plugin-visualizer: "npm:^5.11.0" sjcl: "npm:^1.0.8" + tailwindcss: "npm:^3.4.0" typescript: "npm:^5.3.3" vite: "npm:^5.0.10" vite-plugin-pwa: "npm:^0.17.4" @@ -3850,6 +3860,30 @@ __metadata: languageName: node linkType: hard +"any-promise@npm:^1.0.0": + version: 1.3.0 + resolution: "any-promise@npm:1.3.0" + checksum: 6737469ba353b5becf29e4dc3680736b9caa06d300bda6548812a8fee63ae7d336d756f88572fa6b5219aed36698d808fa55f62af3e7e6845c7a1dc77d240edb + languageName: node + linkType: hard + +"anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + +"arg@npm:^5.0.2": + version: 5.0.2 + resolution: "arg@npm:5.0.2" + checksum: 92fe7de222054a060fd2329e92e867410b3ea260328147ee3fb7855f78efae005f4087e698d4e688a856893c56bb09951588c40f2c901cf6996cd8cd7bcfef2c + languageName: node + linkType: hard + "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -3969,6 +4003,24 @@ __metadata: languageName: node linkType: hard +"autoprefixer@npm:^10.4.16": + version: 10.4.16 + resolution: "autoprefixer@npm:10.4.16" + dependencies: + browserslist: "npm:^4.21.10" + caniuse-lite: "npm:^1.0.30001538" + fraction.js: "npm:^4.3.6" + normalize-range: "npm:^0.1.2" + picocolors: "npm:^1.0.0" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.1.0 + bin: + autoprefixer: bin/autoprefixer + checksum: 3514a4ae63f1f55006c96eb93acef4a0284d78b640d8f27d3178d40b302576e346619001ca139b4ddc5e7b0c5e66921aa45d8e3752d8d521598119aab8ff4997 + languageName: node + linkType: hard + "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" @@ -4113,6 +4165,13 @@ __metadata: languageName: node linkType: hard +"binary-extensions@npm:^2.0.0": + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -4132,7 +4191,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2": +"braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: @@ -4141,6 +4200,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.21.10, browserslist@npm:^4.22.2": + version: 4.22.2 + resolution: "browserslist@npm:4.22.2" + dependencies: + caniuse-lite: "npm:^1.0.30001565" + electron-to-chromium: "npm:^1.4.601" + node-releases: "npm:^2.0.14" + update-browserslist-db: "npm:^1.0.13" + bin: + browserslist: cli.js + checksum: e3590793db7f66ad3a50817e7b7f195ce61e029bd7187200244db664bfbe0ac832f784e4f6b9c958aef8ea4abe001ae7880b7522682df521f4bc0a5b67660b5e + languageName: node + linkType: hard + "browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": version: 4.21.5 resolution: "browserslist@npm:4.21.5" @@ -4155,20 +4228,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.22.2": - version: 4.22.2 - resolution: "browserslist@npm:4.22.2" - dependencies: - caniuse-lite: "npm:^1.0.30001565" - electron-to-chromium: "npm:^1.4.601" - node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.0.13" - bin: - browserslist: cli.js - checksum: e3590793db7f66ad3a50817e7b7f195ce61e029bd7187200244db664bfbe0ac832f784e4f6b9c958aef8ea4abe001ae7880b7522682df521f4bc0a5b67660b5e - languageName: node - linkType: hard - "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -4231,6 +4290,13 @@ __metadata: languageName: node linkType: hard +"camelcase-css@npm:^2.0.1": + version: 2.0.1 + resolution: "camelcase-css@npm:2.0.1" + checksum: 1cec2b3b3dcb5026688a470b00299a8db7d904c4802845c353dbd12d9d248d3346949a814d83bfd988d4d2e5b9904c07efe76fecd195a1d4f05b543e7c0b56b1 + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001449": version: 1.0.30001489 resolution: "caniuse-lite@npm:1.0.30001489" @@ -4238,7 +4304,7 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001565": +"caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001565": version: 1.0.30001571 resolution: "caniuse-lite@npm:1.0.30001571" checksum: 04f53b9a74776c9214476314613af95c62c43a9ddbc2ae555e176e896cc312110f9b74683f278fd07b8b83ab8ef6bee87b88f466df6ae560461a117fbd678b69 @@ -4266,6 +4332,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^3.5.3": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 863e3ff78ee7a4a24513d2a416856e84c8e4f5e60efbe03e8ab791af1a183f569b62fc6f6b8044e2804966cb81277ddbbc1dc374fba3265bd609ea8efd62f5b3 + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -4337,6 +4422,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^4.0.0": + version: 4.1.1 + resolution: "commander@npm:4.1.1" + checksum: 3b2dc4125f387dab73b3294dbcb0ab2a862f9c0ad748ee2b27e3544d25325b7a8cdfbcc228d103a98a716960b14478114a5206b5415bd48cdafa38797891562c + languageName: node + linkType: hard + "common-tags@npm:^1.8.0": version: 1.8.2 resolution: "common-tags@npm:1.8.2" @@ -4428,6 +4520,15 @@ __metadata: languageName: node linkType: hard +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 0e161912c1306861d8f46e1883be1cbc8b1b2879f0f509287c0db71796e4ddfb97ac96bdfca38f77f452e2c10554e1bb5678c99b07a5cf947a12778f73e47e12 + languageName: node + linkType: hard + "csstype@npm:^3.0.2": version: 3.1.2 resolution: "csstype@npm:3.1.2" @@ -4631,6 +4732,13 @@ __metadata: languageName: node linkType: hard +"didyoumean@npm:^1.2.2": + version: 1.2.2 + resolution: "didyoumean@npm:1.2.2" + checksum: de7f11b6a0c8c61018629b7f405bb9746d6e994ce87c1a4b7655c3c718442dc69037a3d46d804950604fd9cbe85c074f7b224a119fc1bda851690a74540c6cf8 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -4640,6 +4748,13 @@ __metadata: languageName: node linkType: hard +"dlv@npm:^1.1.3": + version: 1.1.3 + resolution: "dlv@npm:1.1.3" + checksum: 836459ec6b50e43e9ed388a5fc28954be99e3481af3fa4b5d82a600762eb65ef8faacd454097ed7fc2f8a60aea2800d65a4cece5cd0d81ab82b2031f3f759e6e + languageName: node + linkType: hard + "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -5390,7 +5505,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.3.2": +"fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -5499,6 +5614,13 @@ __metadata: languageName: node linkType: hard +"fraction.js@npm:^4.3.6": + version: 4.3.7 + resolution: "fraction.js@npm:4.3.7" + checksum: bb5ebcdeeffcdc37b68ead3bdfc244e68de188e0c64e9702197333c72963b95cc798883ad16adc21588088b942bca5b6a6ff4aeb1362d19f6f3b629035dc15f5 + languageName: node + linkType: hard + "fs-extra@npm:^9.0.1": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" @@ -5655,7 +5777,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2": +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -6011,6 +6133,15 @@ __metadata: languageName: node linkType: hard +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 078e51b4f956c2c5fd2b26bb2672c3ccf7e1faff38e0ebdba45612265f4e3d9fc3127a1fa8370bbf09eab61339203c3d3b7af5662cbf8be4030f8fac37745b0e + languageName: node + linkType: hard + "is-boolean-object@npm:^1.1.0": version: 1.1.2 resolution: "is-boolean-object@npm:1.1.2" @@ -6037,6 +6168,15 @@ __metadata: languageName: node linkType: hard +"is-core-module@npm:^2.13.0": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: d53bd0cc24b0a0351fb4b206ee3908f71b9bbf1c47e9c9e14e5f06d292af1663704d2abd7e67700d6487b2b7864e0d0f6f10a1edf1892864bdffcb197d1845a2 + languageName: node + linkType: hard + "is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" @@ -6069,7 +6209,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -6310,6 +6450,15 @@ __metadata: languageName: node linkType: hard +"jiti@npm:^1.19.1": + version: 1.21.0 + resolution: "jiti@npm:1.21.0" + bin: + jiti: bin/jiti.js + checksum: 005a0239e50381b5c9919f59dbab86128367bd64872f3376dbbde54b6523f41bd134bf22909e2a509e38fd87e1c22125ca255b9b6b53e7df0fedd23f737334cc + languageName: node + linkType: hard + "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" @@ -6464,6 +6613,20 @@ __metadata: languageName: node linkType: hard +"lilconfig@npm:^2.1.0": + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: b1314a2e55319013d5e7d7d08be39015829d2764a1eaee130129545d40388499d81b1c31b0f9b3417d4db12775a88008b72ec33dd06e0184cf7503b32ca7cc0b + languageName: node + linkType: hard + +"lilconfig@npm:^3.0.0": + version: 3.0.0 + resolution: "lilconfig@npm:3.0.0" + checksum: 55f60f4f9f7b41358cc33875e3696919412683a35aec30c6c60c4f6ecb16fb6d11f7ac856b8458b9b82b21d5f4629649fbfca1de034e8d5b0cc7a70836266db6 + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -6586,7 +6749,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -6744,6 +6907,17 @@ __metadata: languageName: node linkType: hard +"mz@npm:^2.7.0": + version: 2.7.0 + resolution: "mz@npm:2.7.0" + dependencies: + any-promise: "npm:^1.0.0" + object-assign: "npm:^4.0.1" + thenify-all: "npm:^1.0.0" + checksum: 8427de0ece99a07e9faed3c0c6778820d7543e3776f9a84d22cf0ec0a8eb65f6e9aee9c9d353ff9a105ff62d33a9463c6ca638974cc652ee8140cd1e35951c87 + languageName: node + linkType: hard + "nanoid@npm:^3.3.7": version: 3.3.7 resolution: "nanoid@npm:3.3.7" @@ -6819,13 +6993,34 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.1": +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + +"normalize-range@npm:^0.1.2": + version: 0.1.2 + resolution: "normalize-range@npm:0.1.2" + checksum: 9b2f14f093593f367a7a0834267c24f3cb3e887a2d9809c77d8a7e5fd08738bcd15af46f0ab01cc3a3d660386f015816b5c922cea8bf2ee79777f40874063184 + languageName: node + linkType: hard + +"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard +"object-hash@npm:^3.0.0": + version: 3.0.0 + resolution: "object-hash@npm:3.0.0" + checksum: f498d456a20512ba7be500cef4cf7b3c183cc72c65372a549c9a0e6dd78ce26f375e9b1315c07592d3fde8f10d5019986eba35970570d477ed9a2a702514432a + languageName: node + linkType: hard + "object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" @@ -7046,13 +7241,90 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc languageName: node linkType: hard +"pify@npm:^2.3.0": + version: 2.3.0 + resolution: "pify@npm:2.3.0" + checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba + languageName: node + linkType: hard + +"pirates@npm:^4.0.1": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: d02dda76f4fec1cbdf395c36c11cf26f76a644f9f9a1bfa84d3167d0d3154d5289aacc72677aa20d599bb4a6937a471de1b65c995e2aea2d8687cbcd7e43ea5f + languageName: node + linkType: hard + +"postcss-import@npm:^15.1.0": + version: 15.1.0 + resolution: "postcss-import@npm:15.1.0" + dependencies: + postcss-value-parser: "npm:^4.0.0" + read-cache: "npm:^1.0.0" + resolve: "npm:^1.1.7" + peerDependencies: + postcss: ^8.0.0 + checksum: 33c91b7e6b794b5c33d7d7d4730e5f0729c131d2de1ada7fcc116955625a78c3ce613983f019fa9447681795cf3f851e9c38dfbe3f48a2d08a8aef917c70a32a + languageName: node + linkType: hard + +"postcss-js@npm:^4.0.1": + version: 4.0.1 + resolution: "postcss-js@npm:4.0.1" + dependencies: + camelcase-css: "npm:^2.0.1" + peerDependencies: + postcss: ^8.4.21 + checksum: ef2cfe8554daab4166cfcb290f376e7387964c36503f5bd42008778dba735685af8d4f5e0aba67cae999f47c855df40a1cd31ae840e0df320ded36352581045e + languageName: node + linkType: hard + +"postcss-load-config@npm:^4.0.1": + version: 4.0.2 + resolution: "postcss-load-config@npm:4.0.2" + dependencies: + lilconfig: "npm:^3.0.0" + yaml: "npm:^2.3.4" + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + checksum: e2c2ed9b7998a5b123e1ce0c124daf6504b1454c67dcc1c8fdbcc5ffb2597b7de245e3ac34f63afc928d3fd3260b1e36492ebbdb01a9ff63f16b3c8b7b925d1b + languageName: node + linkType: hard + +"postcss-nested@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-nested@npm:6.0.1" + dependencies: + postcss-selector-parser: "npm:^6.0.11" + peerDependencies: + postcss: ^8.2.14 + checksum: 02aaac682f599879fae6aab3210aee59b8b5bde3ba242527f6fd103726955b74ffa05c2b765920be5f403e758045582534d11b1e19add01586c19743ed99e3fe + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^6.0.11": + version: 6.0.13 + resolution: "postcss-selector-parser@npm:6.0.13" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: e779aa1f8ca9ee45d562400aac6109a2bccc59559b6e15adec8bc2a71d395ca563a378fd68f6a61963b4ef2ca190e0c0486e6dc6c41d755f3b82dd6e480e6941 + languageName: node + linkType: hard + "postcss-value-parser@npm:^3.3.0": version: 3.3.1 resolution: "postcss-value-parser@npm:3.3.1" @@ -7060,7 +7332,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.32": +"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: e4e4486f33b3163a606a6ed94f9c196ab49a37a7a7163abfcd469e5f113210120d70b8dd5e33d64636f41ad52316a3725655421eb9a1094f1bcab1db2f555c62 + languageName: node + linkType: hard + +"postcss@npm:^8.4.23, postcss@npm:^8.4.32": version: 8.4.32 resolution: "postcss@npm:8.4.32" dependencies: @@ -7326,6 +7605,24 @@ __metadata: languageName: node linkType: hard +"read-cache@npm:^1.0.0": + version: 1.0.0 + resolution: "read-cache@npm:1.0.0" + dependencies: + pify: "npm:^2.3.0" + checksum: 83a39149d9dfa38f0c482ea0d77b34773c92fef07fe7599cdd914d255b14d0453e0229ef6379d8d27d6947f42d7581635296d0cfa7708f05a9bd8e789d398b31 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 196b30ef6ccf9b6e18c4e1724b7334f72a093d011a99f3b5920470f0b3406a51770867b3e1ae9711f227ef7a7065982f6ee2ce316746b2cb42c88efe44297fe7 + languageName: node + linkType: hard + "recharts-scale@npm:^0.4.4": version: 0.4.5 resolution: "recharts-scale@npm:0.4.5" @@ -7507,6 +7804,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.1.7, resolve@npm:^1.22.2": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: c473506ee01eb45cbcfefb68652ae5759e092e6b0fb64547feadf9736a6394f258fbc6f88e00c5ca36d5477fbb65388b272432a3600fa223062e54333c156753 + languageName: node + linkType: hard + "resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1": version: 1.22.2 resolution: "resolve@npm:1.22.2" @@ -7533,6 +7843,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: f345cd37f56a2c0275e3fe062517c650bb673815d885e7507566df589375d165bbbf4bdb6aa95600a9bc55f4744b81f452b5a63f95b9f10a72787dba3c90890a + languageName: node + linkType: hard + "resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin": version: 1.22.2 resolution: "resolve@patch:resolve@npm%3A1.22.2#optional!builtin::version=1.22.2&hash=c3c19d" @@ -8140,6 +8463,24 @@ __metadata: languageName: node linkType: hard +"sucrase@npm:^3.32.0": + version: 3.35.0 + resolution: "sucrase@npm:3.35.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.2" + commander: "npm:^4.0.0" + glob: "npm:^10.3.10" + lines-and-columns: "npm:^1.1.6" + mz: "npm:^2.7.0" + pirates: "npm:^4.0.1" + ts-interface-checker: "npm:^0.1.9" + bin: + sucrase: bin/sucrase + sucrase-node: bin/sucrase-node + checksum: bc601558a62826f1c32287d4fdfa4f2c09fe0fec4c4d39d0e257fd9116d7d6227a18309721d4185ec84c9dc1af0d5ec0e05a42a337fbb74fc293e068549aacbe + languageName: node + linkType: hard + "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -8165,6 +8506,39 @@ __metadata: languageName: node linkType: hard +"tailwindcss@npm:^3.4.0": + version: 3.4.0 + resolution: "tailwindcss@npm:3.4.0" + dependencies: + "@alloc/quick-lru": "npm:^5.2.0" + arg: "npm:^5.0.2" + chokidar: "npm:^3.5.3" + didyoumean: "npm:^1.2.2" + dlv: "npm:^1.1.3" + fast-glob: "npm:^3.3.0" + glob-parent: "npm:^6.0.2" + is-glob: "npm:^4.0.3" + jiti: "npm:^1.19.1" + lilconfig: "npm:^2.1.0" + micromatch: "npm:^4.0.5" + normalize-path: "npm:^3.0.0" + object-hash: "npm:^3.0.0" + picocolors: "npm:^1.0.0" + postcss: "npm:^8.4.23" + postcss-import: "npm:^15.1.0" + postcss-js: "npm:^4.0.1" + postcss-load-config: "npm:^4.0.1" + postcss-nested: "npm:^6.0.1" + postcss-selector-parser: "npm:^6.0.11" + resolve: "npm:^1.22.2" + sucrase: "npm:^3.32.0" + bin: + tailwind: lib/cli.js + tailwindcss: lib/cli.js + checksum: e69de4856308b3a6bcd084cc6745b6e3dcf6623553414f042d0365adceb70d79e41ec97a2a38c3aea0d5a875aa1eb4e84e04ad35ea1f0f7debcb7150779eae52 + languageName: node + linkType: hard + "tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.2.0 resolution: "tar@npm:6.2.0" @@ -8219,6 +8593,24 @@ __metadata: languageName: node linkType: hard +"thenify-all@npm:^1.0.0": + version: 1.6.0 + resolution: "thenify-all@npm:1.6.0" + dependencies: + thenify: "npm:>= 3.1.0 < 4" + checksum: dba7cc8a23a154cdcb6acb7f51d61511c37a6b077ec5ab5da6e8b874272015937788402fd271fdfc5f187f8cb0948e38d0a42dcc89d554d731652ab458f5343e + languageName: node + linkType: hard + +"thenify@npm:>= 3.1.0 < 4": + version: 3.3.1 + resolution: "thenify@npm:3.3.1" + dependencies: + any-promise: "npm:^1.0.0" + checksum: 486e1283a867440a904e36741ff1a177faa827cf94d69506f7e3ae4187b9afdf9ec368b3d8da225c192bfe2eb943f3f0080594156bf39f21b57cd1411e2e7f6d + languageName: node + linkType: hard + "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -8244,6 +8636,13 @@ __metadata: languageName: node linkType: hard +"ts-interface-checker@npm:^0.1.9": + version: 0.1.13 + resolution: "ts-interface-checker@npm:0.1.13" + checksum: 9f7346b9e25bade7a1050c001ec5a4f7023909c0e1644c5a96ae20703a131627f081479e6622a4ecee2177283d0069e651e507bedadd3904fc4010ab28ffce00 + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.14.1": version: 3.14.2 resolution: "tsconfig-paths@npm:3.14.2" @@ -8485,6 +8884,13 @@ __metadata: languageName: node linkType: hard +"util-deprecate@npm:^1.0.2": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + "victory-vendor@npm:^36.6.8": version: 36.6.10 resolution: "victory-vendor@npm:36.6.10" @@ -8910,6 +9316,13 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.3.4": + version: 2.3.4 + resolution: "yaml@npm:2.3.4" + checksum: f8207ce43065a22268a2806ea6a0fa3974c6fde92b4b2fa0082357e487bc333e85dc518910007e7ac001b532c7c84bd3eccb6c7757e94182b564028b0008f44b + languageName: node + linkType: hard + "yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 70e0a26..12918f4 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -13,4 +13,10 @@ services: clamav: image: "clamav/clamav" ports: - - "3320:3310" \ No newline at end of file + - "3320:3310" + prometheus: + image: bitnami/prometheus + ports: + - "9090:9090" + volumes: + - "./prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml:ro" \ No newline at end of file