mirror of
https://github.com/DeveloLongScript/MHSF.git
synced 2026-05-07 16:05:00 -05:00
fix: uploadmentation
This commit is contained in:
parent
7766ff4d32
commit
0ceb8de3b8
@ -11,30 +11,32 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@clerk/nextjs": "^6.10.3",
|
"@clerk/nextjs": "^6.10.3",
|
||||||
|
"@fontsource/jetbrains-mono": "^5.2.5",
|
||||||
"@hookform/resolvers": "^3.10.0",
|
"@hookform/resolvers": "^3.10.0",
|
||||||
"@radix-ui/react-aspect-ratio": "^1.1.1",
|
"@radix-ui/react-aspect-ratio": "^1.1.1",
|
||||||
"@radix-ui/react-avatar": "^1.1.1",
|
"@radix-ui/react-avatar": "^1.1.1",
|
||||||
"@radix-ui/react-collapsible": "^1.1.1",
|
|
||||||
"@radix-ui/react-hover-card": "^1.1.1",
|
|
||||||
"@radix-ui/react-icons": "^1.3.0",
|
|
||||||
"@radix-ui/react-menubar": "^1.1.1",
|
|
||||||
"@radix-ui/react-primitive": "^2.0.0",
|
|
||||||
"@radix-ui/react-select": "^2.1.2",
|
|
||||||
"@radix-ui/react-switch": "^1.1.0",
|
|
||||||
"@radix-ui/react-checkbox": "^1.1.1",
|
"@radix-ui/react-checkbox": "^1.1.1",
|
||||||
|
"@radix-ui/react-collapsible": "^1.1.1",
|
||||||
"@radix-ui/react-context-menu": "^2.1.5",
|
"@radix-ui/react-context-menu": "^2.1.5",
|
||||||
"@radix-ui/react-dialog": "^1.1.2",
|
"@radix-ui/react-dialog": "^1.1.2",
|
||||||
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
||||||
|
"@radix-ui/react-hover-card": "^1.1.1",
|
||||||
|
"@radix-ui/react-icons": "^1.3.0",
|
||||||
"@radix-ui/react-label": "^2.1.0",
|
"@radix-ui/react-label": "^2.1.0",
|
||||||
|
"@radix-ui/react-menubar": "^1.1.1",
|
||||||
"@radix-ui/react-navigation-menu": "^1.1.4",
|
"@radix-ui/react-navigation-menu": "^1.1.4",
|
||||||
"@radix-ui/react-popover": "^1.0.7",
|
"@radix-ui/react-popover": "^1.0.7",
|
||||||
|
"@radix-ui/react-primitive": "^2.0.0",
|
||||||
"@radix-ui/react-radio-group": "^1.2.0",
|
"@radix-ui/react-radio-group": "^1.2.0",
|
||||||
"@radix-ui/react-scroll-area": "^1.1.0",
|
"@radix-ui/react-scroll-area": "^1.1.0",
|
||||||
|
"@radix-ui/react-select": "^2.1.2",
|
||||||
"@radix-ui/react-separator": "^1.1.0",
|
"@radix-ui/react-separator": "^1.1.0",
|
||||||
"@radix-ui/react-slot": "^1.1.0",
|
"@radix-ui/react-slot": "^1.1.0",
|
||||||
|
"@radix-ui/react-switch": "^1.1.0",
|
||||||
"@radix-ui/react-tabs": "^1.1.0",
|
"@radix-ui/react-tabs": "^1.1.0",
|
||||||
"@radix-ui/react-tooltip": "^1.1.3",
|
"@radix-ui/react-tooltip": "^1.1.3",
|
||||||
"@types/jsonwebtoken": "^9.0.8",
|
"@types/jsonwebtoken": "^9.0.8",
|
||||||
|
"@uiw/codemirror-theme-vscode": "^4.23.12",
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"cmdk": "1.0.0",
|
"cmdk": "1.0.0",
|
||||||
|
|||||||
@ -56,6 +56,7 @@
|
|||||||
"@unocss/postcss": "^0.61.5",
|
"@unocss/postcss": "^0.61.5",
|
||||||
"@unocss/transformer-directives": "^0.61.5",
|
"@unocss/transformer-directives": "^0.61.5",
|
||||||
"@unocss/webpack": "^0.61.5",
|
"@unocss/webpack": "^0.61.5",
|
||||||
|
"@uploadthing/react": "^7.3.1",
|
||||||
"@vercel/functions": "^2.0.0",
|
"@vercel/functions": "^2.0.0",
|
||||||
"@vercel/og": "^0.6.5",
|
"@vercel/og": "^0.6.5",
|
||||||
"ag-grid-react": "^33.0.3",
|
"ag-grid-react": "^33.0.3",
|
||||||
@ -108,6 +109,7 @@
|
|||||||
"tailwindcss-patch": "^4.0.0",
|
"tailwindcss-patch": "^4.0.0",
|
||||||
"turbo": "^2.4.0",
|
"turbo": "^2.4.0",
|
||||||
"unplugin-tailwindcss-mangle": "^3.0.1",
|
"unplugin-tailwindcss-mangle": "^3.0.1",
|
||||||
|
"uploadthing": "^7.7.2",
|
||||||
"vaul": "^1.1.2",
|
"vaul": "^1.1.2",
|
||||||
"zod": "^3.24.2"
|
"zod": "^3.24.2"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
|
||||||
<url><loc>https://mhsf.app/waitlist</loc><lastmod>2025-05-10T18:03:30.182Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/support</loc><lastmod>2025-05-11T22:17:55.268Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
<url><loc>https://mhsf.app/home</loc><lastmod>2025-05-10T18:03:30.186Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/waitlist/oauth-need-discord</loc><lastmod>2025-05-11T22:17:55.272Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
<url><loc>https://mhsf.app/waitlist/oauth-need-discord</loc><lastmod>2025-05-10T18:03:30.186Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/servers</loc><lastmod>2025-05-11T22:17:55.272Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
<url><loc>https://mhsf.app/servers/embedded/sl-modification-frame/files</loc><lastmod>2025-05-10T18:03:30.186Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/waitlist/ref</loc><lastmod>2025-05-11T22:17:55.272Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
<url><loc>https://mhsf.app/support</loc><lastmod>2025-05-10T18:03:30.186Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/settings</loc><lastmod>2025-05-11T22:17:55.272Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
<url><loc>https://mhsf.app/servers/embedded/sl-modification-frame</loc><lastmod>2025-05-10T18:03:30.186Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/waitlist</loc><lastmod>2025-05-11T22:17:55.272Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
<url><loc>https://mhsf.app/settings</loc><lastmod>2025-05-10T18:03:30.186Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/servers/embedded/sl-modification-frame</loc><lastmod>2025-05-11T22:17:55.272Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
<url><loc>https://mhsf.app/waitlist/ref</loc><lastmod>2025-05-10T18:03:30.186Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/servers/embedded/sl-modification-frame/files</loc><lastmod>2025-05-11T22:17:55.272Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
<url><loc>https://mhsf.app/servers</loc><lastmod>2025-05-10T18:03:30.186Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
<url><loc>https://mhsf.app/home</loc><lastmod>2025-05-11T22:17:55.272Z</lastmod><changefreq>daily</changefreq><priority>0.7</priority></url>
|
||||||
</urlset>
|
</urlset>
|
||||||
File diff suppressed because one or more lines are too long
2812
apps/www/src/components/feat/server-page/server-editor/milkdown-additional-style.css
Normal file
2812
apps/www/src/components/feat/server-page/server-editor/milkdown-additional-style.css
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* MHSF, Minehut Server List
|
|
||||||
* All external content is rather licensed under the ECA Agreement
|
|
||||||
* located here: https://mhsf.app/docs/legal/external-content-agreement
|
|
||||||
*
|
|
||||||
* All code under MHSF is licensed under the MIT License
|
|
||||||
* by open source contributors
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 dvelo
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to
|
|
||||||
* deal in the Software without restriction, including without limitation the
|
|
||||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
* sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import '@milkdown/crepe/theme/nord-dark.css';
|
|
||||||
import type { ReactNode } from 'react';
|
|
||||||
|
|
||||||
export function ServerDescriptionDarkProvider({children}: {children: ReactNode}) {
|
|
||||||
return children;
|
|
||||||
}
|
|
||||||
@ -31,23 +31,26 @@
|
|||||||
import { listenerCtx } from "@milkdown/kit/plugin/listener";
|
import { listenerCtx } from "@milkdown/kit/plugin/listener";
|
||||||
import { Crepe } from "@milkdown/crepe";
|
import { Crepe } from "@milkdown/crepe";
|
||||||
import { useEditor, type EditorInfoCtx, Milkdown } from "@milkdown/react";
|
import { useEditor, type EditorInfoCtx, Milkdown } from "@milkdown/react";
|
||||||
|
import { vscodeDark, vscodeDarkInit } from '@uiw/codemirror-theme-vscode';
|
||||||
import "@milkdown/crepe/theme/common/style.css";
|
import "@milkdown/crepe/theme/common/style.css";
|
||||||
|
import "@fontsource/jetbrains-mono";
|
||||||
import { createContext } from "react";
|
import { createContext } from "react";
|
||||||
import { Spinner } from "@/components/ui/spinner";
|
import { Spinner } from "@/components/ui/spinner";
|
||||||
import { ServerDescriptionLightProvider } from "./server-light-provider";
|
|
||||||
import { useTheme } from "@/lib/hooks/use-theme";
|
import { useTheme } from "@/lib/hooks/use-theme";
|
||||||
import { ServerDescriptionDarkProvider } from "./server-dark-provider";
|
|
||||||
|
|
||||||
export function ServerEditorDescription({
|
export function ServerEditorDescription({
|
||||||
defaultMarkdown,
|
defaultMarkdown,
|
||||||
onUpdate,
|
onUpdate,
|
||||||
}: { defaultMarkdown: string; onUpdate?: (update: string) => void }) {
|
}: { defaultMarkdown: string; onUpdate?: (update: string) => void }) {
|
||||||
const { resolvedTheme } = useTheme();
|
|
||||||
const { loading } = useEditor((root) => {
|
const { loading } = useEditor((root) => {
|
||||||
const crepe = new Crepe({
|
const crepe = new Crepe({
|
||||||
root,
|
root,
|
||||||
defaultValue: defaultMarkdown,
|
defaultValue: defaultMarkdown,
|
||||||
|
featureConfigs: { [Crepe.Feature.Toolbar]: {
|
||||||
|
latexIcon: undefined
|
||||||
|
}, [Crepe.Feature.CodeMirror]: {
|
||||||
|
theme: vscodeDark
|
||||||
|
}}
|
||||||
});
|
});
|
||||||
crepe.editor.config(async (ctx) => {
|
crepe.editor.config(async (ctx) => {
|
||||||
ctx.get(listenerCtx).markdownUpdated((_, markdown) => {
|
ctx.get(listenerCtx).markdownUpdated((_, markdown) => {
|
||||||
@ -58,7 +61,7 @@ export function ServerEditorDescription({
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-[500px] max-h-[500px]">
|
<div>
|
||||||
{loading && (
|
{loading && (
|
||||||
<div>
|
<div>
|
||||||
<span className="flex items-center justify-center w-full">
|
<span className="flex items-center justify-center w-full">
|
||||||
@ -69,15 +72,7 @@ export function ServerEditorDescription({
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{resolvedTheme === "dark" ? (
|
|
||||||
<ServerDescriptionLightProvider>
|
|
||||||
<Milkdown />
|
<Milkdown />
|
||||||
</ServerDescriptionLightProvider>
|
|
||||||
) : (
|
|
||||||
<ServerDescriptionDarkProvider>
|
|
||||||
<Milkdown />
|
|
||||||
</ServerDescriptionDarkProvider>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,11 @@ import type { OnlineServer, ServerResponse } from "@/lib/types/mh-server";
|
|||||||
import { useServers } from "@/lib/hooks/use-servers";
|
import { useServers } from "@/lib/hooks/use-servers";
|
||||||
import { Alert } from "@/components/ui/alert";
|
import { Alert } from "@/components/ui/alert";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
|
import { BannerUploaderRouter } from "@/pages/api/v1/server/get/[server]/settings/upload-banner";
|
||||||
|
import {
|
||||||
|
generateUploadButton,
|
||||||
|
generateUploadDropzone,
|
||||||
|
} from "@uploadthing/react";
|
||||||
|
|
||||||
const successClasses =
|
const successClasses =
|
||||||
"bg-green-200 border-green-400 dark:bg-green-800 dark:border-green-600";
|
"bg-green-200 border-green-400 dark:bg-green-800 dark:border-green-600";
|
||||||
@ -53,7 +58,7 @@ export function ServerEditorProvider({
|
|||||||
setOnlineData(server);
|
setOnlineData(server);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [open, loading]);
|
}, [open, loading, servers, minehutData.name]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
@ -68,13 +73,16 @@ export function ServerEditorProvider({
|
|||||||
const requirementTwo = onlineData !== null;
|
const requirementTwo = onlineData !== null;
|
||||||
const requirementThree = claimedUser === onlineData?.author;
|
const requirementThree = claimedUser === onlineData?.author;
|
||||||
const requirementFour = claimedUser !== null;
|
const requirementFour = claimedUser !== null;
|
||||||
|
const UploadDropzone = generateUploadDropzone<BannerUploaderRouter>({
|
||||||
|
url: `/api/v1/server/get/${minehutData._id}/settings/upload-banner`,
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{children}
|
{children}
|
||||||
<MilkdownProvider>
|
<MilkdownProvider>
|
||||||
<Drawer open={open} onOpenChange={setOpen}>
|
<Drawer open={open} onOpenChange={setOpen}>
|
||||||
<DrawerContent className="p-4 ">
|
<DrawerContent className="p-4 !max-h-[700px] !h-[700px]">
|
||||||
<br />
|
<br />
|
||||||
{!serverData.server?.customizationData.isOwned ? (
|
{!serverData.server?.customizationData.isOwned ? (
|
||||||
<div className="h-full overflow-y-scroll">
|
<div className="h-full overflow-y-scroll">
|
||||||
@ -219,7 +227,7 @@ export function ServerEditorProvider({
|
|||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
{serverData.server?.customizationData.isOwnedByUser ? (
|
{serverData.server?.customizationData.isOwnedByUser ? (
|
||||||
<div className="max-h-[400px] overflow-y-scroll">
|
<div className="!max-h-[700px] !h-[700px] overflow-y-scroll">
|
||||||
<DrawerTitle className="scroll-m-20 text-2xl font-extrabold tracking-tight lg:text-4xl mb-3">
|
<DrawerTitle className="scroll-m-20 text-2xl font-extrabold tracking-tight lg:text-4xl mb-3">
|
||||||
Server Settings
|
Server Settings
|
||||||
</DrawerTitle>
|
</DrawerTitle>
|
||||||
@ -235,13 +243,34 @@ export function ServerEditorProvider({
|
|||||||
<ServerEditorDescription
|
<ServerEditorDescription
|
||||||
defaultMarkdown={
|
defaultMarkdown={
|
||||||
serverData.server?.customizationData.description ??
|
serverData.server?.customizationData.description ??
|
||||||
""
|
`# ${minehutData.name}`
|
||||||
}
|
}
|
||||||
onUpdate={(content) => console.log(content)}
|
onUpdate={(content) => console.log(content)}
|
||||||
|
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Material>
|
</Material>
|
||||||
|
<Material className="grid gap-1 mt-2 max-h-[700px]">
|
||||||
|
<strong>Server Banner</strong>
|
||||||
|
<p className="mb-3">
|
||||||
|
Pick out whatever represents your server best! Images
|
||||||
|
have a limit of 4.5MB, and the prefered aspect ratio for
|
||||||
|
the banner should be 10:4 to look the best on MHSF.
|
||||||
|
</p>
|
||||||
|
<UploadDropzone
|
||||||
|
endpoint="imageUploader"
|
||||||
|
className="uploadthing-dropzone"
|
||||||
|
onClientUploadComplete={(res) => {
|
||||||
|
console.log("Upload complete response:", res);
|
||||||
|
// Refresh the server data
|
||||||
|
serverData.refresh();
|
||||||
|
toast.success("Banner uploaded successfully!");
|
||||||
|
}}
|
||||||
|
onUploadError={(error: Error) => {
|
||||||
|
console.error("Upload error:", error);
|
||||||
|
toast.error(`Upload failed: ${error.message}`);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Material>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<Placeholder
|
<Placeholder
|
||||||
|
|||||||
@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* MHSF, Minehut Server List
|
|
||||||
* All external content is rather licensed under the ECA Agreement
|
|
||||||
* located here: https://mhsf.app/docs/legal/external-content-agreement
|
|
||||||
*
|
|
||||||
* All code under MHSF is licensed under the MIT License
|
|
||||||
* by open source contributors
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 dvelo
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to
|
|
||||||
* deal in the Software without restriction, including without limitation the
|
|
||||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
* sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import '@milkdown/crepe/theme/frame.css';
|
|
||||||
import type { ReactNode } from 'react';
|
|
||||||
|
|
||||||
export function ServerDescriptionLightProvider({children}: {children: ReactNode}) {
|
|
||||||
return children;
|
|
||||||
}
|
|
||||||
@ -77,13 +77,13 @@ export function useFilters(data: OnlineServer[]) {
|
|||||||
if (filteredData.length === 0 || data.length === 0) {
|
if (filteredData.length === 0 || data.length === 0) {
|
||||||
window.dispatchEvent(new Event("update-modification-stack"));
|
window.dispatchEvent(new Event("update-modification-stack"));
|
||||||
} else setLoading(false);
|
} else setLoading(false);
|
||||||
}, [data, filteredData.length]);
|
}, [data, filteredData, loading]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (data.length === 0) {
|
if (data.length === 0) {
|
||||||
window.dispatchEvent(new Event("update-modification-stack"));
|
window.dispatchEvent(new Event("update-modification-stack"));
|
||||||
} else setLoading(false);
|
} else setLoading(false);
|
||||||
}, [data, filteredData.length]);
|
}, [data, filteredData, loading]);
|
||||||
|
|
||||||
const testModeInit = (type: "filter" | "sort") => {
|
const testModeInit = (type: "filter" | "sort") => {
|
||||||
window.dispatchEvent(new Event("test-mode.enabled"));
|
window.dispatchEvent(new Event("test-mode.enabled"));
|
||||||
|
|||||||
@ -53,6 +53,12 @@ export function useMHSFServer(id: string) {
|
|||||||
|
|
||||||
setServer(json.server);
|
setServer(json.server);
|
||||||
},
|
},
|
||||||
|
refresh: async () => {
|
||||||
|
const response = await fetch("/api/v1/server/get/" + id);
|
||||||
|
const json = await response.json();
|
||||||
|
|
||||||
|
setServer(json.server);
|
||||||
|
},
|
||||||
favoriteServer: async () => {
|
favoriteServer: async () => {
|
||||||
if (!server)
|
if (!server)
|
||||||
throw new Error("Server hasn't initialized, cannot continue.");
|
throw new Error("Server hasn't initialized, cannot continue.");
|
||||||
|
|||||||
@ -47,6 +47,8 @@ const isWaitlistPage = createRouteMatcher(["/waitlist", "/waitlist(.*)"]);
|
|||||||
const apiWaitlistPage = createRouteMatcher([
|
const apiWaitlistPage = createRouteMatcher([
|
||||||
"/api/v1/user/waitlist(.*)",
|
"/api/v1/user/waitlist(.*)",
|
||||||
"/api/v1/get-status",
|
"/api/v1/get-status",
|
||||||
|
// Required by UploadThing (okay fine Theo!)
|
||||||
|
"/api/v1/server/get/:serverId/settings/upload-banner"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
export default process.env.NEXT_PUBLIC_IS_AUTH === "true"
|
export default process.env.NEXT_PUBLIC_IS_AUTH === "true"
|
||||||
|
|||||||
@ -275,7 +275,7 @@ async function fetchHistoryData(
|
|||||||
return await cursor.toArray();
|
return await cursor.toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function findServerData(
|
export async function findServerData(
|
||||||
server: string,
|
server: string,
|
||||||
): Promise<{ exists: boolean; name: string }> {
|
): Promise<{ exists: boolean; name: string }> {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -0,0 +1,125 @@
|
|||||||
|
/*
|
||||||
|
* MHSF, Minehut Server List
|
||||||
|
* All external content is rather licensed under the ECA Agreement
|
||||||
|
* located here: https://mhsf.app/docs/legal/external-content-agreement
|
||||||
|
*
|
||||||
|
* All code under MHSF is licensed under the MIT License
|
||||||
|
* by open source contributors
|
||||||
|
*
|
||||||
|
* Copyright (c) 2025 dvelo
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
* deal in the Software without restriction, including without limitation the
|
||||||
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { getAuth } from "@clerk/nextjs/server";
|
||||||
|
import {
|
||||||
|
createRouteHandler,
|
||||||
|
createUploadthing,
|
||||||
|
type FileRouter,
|
||||||
|
} from "uploadthing/next-legacy";
|
||||||
|
import { UploadThingError } from "uploadthing/server";
|
||||||
|
import { findServerData } from "..";
|
||||||
|
import { MongoClient } from "mongodb";
|
||||||
|
import type { FileRoute } from "uploadthing/types";
|
||||||
|
import type { Json } from "@uploadthing/shared";
|
||||||
|
|
||||||
|
const f = createUploadthing();
|
||||||
|
|
||||||
|
export default createRouteHandler({
|
||||||
|
router: {
|
||||||
|
imageUploader: f({
|
||||||
|
image: {
|
||||||
|
maxFileSize: "4MB",
|
||||||
|
maxFileCount: 1,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
// Set permissions and file types for this FileRoute
|
||||||
|
.middleware(async ({ req, res }) => {
|
||||||
|
// Step 1: Check authentication
|
||||||
|
const { userId } = getAuth(req);
|
||||||
|
|
||||||
|
if (!userId) throw new UploadThingError("Unauthorized");
|
||||||
|
|
||||||
|
// Step 2: Check server
|
||||||
|
const { server } = req.query;
|
||||||
|
const serverData = await findServerData(server as string);
|
||||||
|
const mongoClient = new MongoClient(process.env.MONGO_DB as string);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (!serverData.exists) throw new UploadThingError("Server doesn't exist");
|
||||||
|
await mongoClient.connect();
|
||||||
|
|
||||||
|
const db = mongoClient.db(process.env.CUSTOM_MONGO_DB ?? "mhsf");
|
||||||
|
const ownedServer = await db.collection("owned-servers").findOne({ $or: [{ serverId: server }, { server: serverData.name }] });
|
||||||
|
if (!ownedServer) throw new UploadThingError("Server not linked");
|
||||||
|
if (ownedServer.author !== userId) throw new UploadThingError("You don't own this server.");
|
||||||
|
|
||||||
|
return {
|
||||||
|
userId,
|
||||||
|
ownedServer,
|
||||||
|
serverId: server,
|
||||||
|
serverName: serverData.name
|
||||||
|
};
|
||||||
|
} finally {
|
||||||
|
await mongoClient.close();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.onUploadComplete(async ({ metadata, file }) => {
|
||||||
|
// This code RUNS ON YOUR SERVER after upload
|
||||||
|
console.log("Upload complete for userId:", metadata.userId);
|
||||||
|
console.log("file url", file.ufsUrl);
|
||||||
|
console.log("metadata:", metadata);
|
||||||
|
|
||||||
|
// Update the server's customization data with the new banner URL
|
||||||
|
const mongoClient = new MongoClient(process.env.MONGO_DB as string);
|
||||||
|
try {
|
||||||
|
await mongoClient.connect();
|
||||||
|
const db = mongoClient.db(process.env.CUSTOM_MONGO_DB ?? "mhsf");
|
||||||
|
|
||||||
|
// Update or insert the customization data
|
||||||
|
const result = await db.collection("customization").updateOne(
|
||||||
|
{ $or: [{ serverId: metadata.serverId }, { server: metadata.serverName }] },
|
||||||
|
{ $set: { banner: file.ufsUrl } },
|
||||||
|
{ upsert: true }
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log("Database update result:", result);
|
||||||
|
|
||||||
|
// !!! Whatever is returned here is sent to the clientside `onClientUploadComplete` callback
|
||||||
|
return { uploadedBy: metadata.userId };
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error updating database:", error);
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
await mongoClient.close();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export type BannerUploaderRouter = {
|
||||||
|
imageUploader: FileRoute<{
|
||||||
|
input: undefined;
|
||||||
|
output: {
|
||||||
|
uploadedBy: string;
|
||||||
|
};
|
||||||
|
errorShape: Json;
|
||||||
|
}>;
|
||||||
|
}
|
||||||
178
yarn.lock
178
yarn.lock
@ -825,6 +825,15 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@effect-ts/system/-/system-0.57.5.tgz#921e9b39dcea2d1728e0f49a0af233472efdc6cb"
|
resolved "https://registry.yarnpkg.com/@effect-ts/system/-/system-0.57.5.tgz#921e9b39dcea2d1728e0f49a0af233472efdc6cb"
|
||||||
integrity sha512-/crHGujo0xnuHIYNc1VgP0HGJGFSoSqq88JFXe6FmFyXPpWt8Xu39LyLg7rchsxfXFeEdA9CrIZvLV5eswXV5g==
|
integrity sha512-/crHGujo0xnuHIYNc1VgP0HGJGFSoSqq88JFXe6FmFyXPpWt8Xu39LyLg7rchsxfXFeEdA9CrIZvLV5eswXV5g==
|
||||||
|
|
||||||
|
"@effect/platform@0.81.0":
|
||||||
|
version "0.81.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@effect/platform/-/platform-0.81.0.tgz#da91e8ecaa157e02383dba9b97b1a592a7d3b485"
|
||||||
|
integrity sha512-RZ0pqpSUET0Ab3CBjOhJ12C2/vWLQsy+SLJbGNxjcOm9xZAwQowggWCs4S3ZXhdnNTR5WJHH02WlAWHJDaMKhA==
|
||||||
|
dependencies:
|
||||||
|
find-my-way-ts "^0.1.5"
|
||||||
|
msgpackr "^1.11.2"
|
||||||
|
multipasta "^0.2.5"
|
||||||
|
|
||||||
"@emnapi/core@^1.4.0":
|
"@emnapi/core@^1.4.0":
|
||||||
version "1.4.3"
|
version "1.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6"
|
resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6"
|
||||||
@ -1357,6 +1366,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429"
|
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429"
|
||||||
integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==
|
integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==
|
||||||
|
|
||||||
|
"@fontsource/jetbrains-mono@^5.2.5":
|
||||||
|
version "5.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@fontsource/jetbrains-mono/-/jetbrains-mono-5.2.5.tgz#c3e9931ae7ebd70b25b6aaf98caf5c2720aaffb3"
|
||||||
|
integrity sha512-TPZ9b/uq38RMdrlZZkl0RwN8Ju9JxuqMETrw76pUQFbGtE1QbwQaNsLlnUrACNNBNbd0NZRXiJJSkC8ajPgbew==
|
||||||
|
|
||||||
"@graphql-typed-document-node/core@^3.1.0":
|
"@graphql-typed-document-node/core@^3.1.0":
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861"
|
resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861"
|
||||||
@ -2704,6 +2718,36 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
sparse-bitfield "^3.0.3"
|
sparse-bitfield "^3.0.3"
|
||||||
|
|
||||||
|
"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3":
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11"
|
||||||
|
integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==
|
||||||
|
|
||||||
|
"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3":
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855"
|
||||||
|
integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==
|
||||||
|
|
||||||
|
"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3":
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb"
|
||||||
|
integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==
|
||||||
|
|
||||||
|
"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3":
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159"
|
||||||
|
integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==
|
||||||
|
|
||||||
|
"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3":
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3"
|
||||||
|
integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==
|
||||||
|
|
||||||
|
"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3":
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242"
|
||||||
|
integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==
|
||||||
|
|
||||||
"@napi-rs/wasm-runtime@^0.2.8", "@napi-rs/wasm-runtime@^0.2.9":
|
"@napi-rs/wasm-runtime@^0.2.8", "@napi-rs/wasm-runtime@^0.2.9":
|
||||||
version "0.2.9"
|
version "0.2.9"
|
||||||
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.9.tgz#7278122cf94f3b36d8170a8eee7d85356dfa6a96"
|
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.9.tgz#7278122cf94f3b36d8170a8eee7d85356dfa6a96"
|
||||||
@ -4280,6 +4324,16 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2"
|
resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2"
|
||||||
integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==
|
integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==
|
||||||
|
|
||||||
|
"@standard-schema/spec@1.0.0-beta.4":
|
||||||
|
version "1.0.0-beta.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.0.0-beta.4.tgz#62f520109add3eb016004098363bfee0678dd1ec"
|
||||||
|
integrity sha512-d3IxtzLo7P1oZ8s8YNvxzBUXRXojSut8pbPrTYtzsc5sn4+53jVqbk66pQerSZbZSJZQux6LkclB/+8IDordHg==
|
||||||
|
|
||||||
|
"@standard-schema/spec@^1.0.0":
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.0.0.tgz#f193b73dc316c4170f2e82a881da0f550d551b9c"
|
||||||
|
integrity sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==
|
||||||
|
|
||||||
"@stoplight/better-ajv-errors@1.0.3":
|
"@stoplight/better-ajv-errors@1.0.3":
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz#d74a5c4da5d786c17188d7f4edec505f089885fa"
|
resolved "https://registry.yarnpkg.com/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz#d74a5c4da5d786c17188d7f4edec505f089885fa"
|
||||||
@ -5179,6 +5233,22 @@
|
|||||||
"@typescript-eslint/types" "8.31.0"
|
"@typescript-eslint/types" "8.31.0"
|
||||||
eslint-visitor-keys "^4.2.0"
|
eslint-visitor-keys "^4.2.0"
|
||||||
|
|
||||||
|
"@uiw/codemirror-theme-vscode@^4.23.12":
|
||||||
|
version "4.23.12"
|
||||||
|
resolved "https://registry.yarnpkg.com/@uiw/codemirror-theme-vscode/-/codemirror-theme-vscode-4.23.12.tgz#564bd3d39743d370d0f0513b6e14e87bf48c724f"
|
||||||
|
integrity sha512-ePBaUQiixrpmSoZJWCGXUStKmcM8G0VBv3UqwPR+kNGBjqDife76Gbhv77izSeEI3zRPzL+683BOdclkvWnsMg==
|
||||||
|
dependencies:
|
||||||
|
"@uiw/codemirror-themes" "4.23.12"
|
||||||
|
|
||||||
|
"@uiw/codemirror-themes@4.23.12":
|
||||||
|
version "4.23.12"
|
||||||
|
resolved "https://registry.yarnpkg.com/@uiw/codemirror-themes/-/codemirror-themes-4.23.12.tgz#9afbf8b3f7c403fa06cbd264762fd267f982548b"
|
||||||
|
integrity sha512-8etEByfS9yttFZW0rcWhdZc7/JXJKRWlU5lHmJCI3GydZNGCzydNA+HtK9nWKpJUndVc58Q2sqSC5OIcwq8y6A==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/language" "^6.0.0"
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.0.0"
|
||||||
|
|
||||||
"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0":
|
"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0":
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8"
|
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8"
|
||||||
@ -5384,6 +5454,28 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.6.3.tgz#841f71e6d01b4439f88178c0f571be46c0138620"
|
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.6.3.tgz#841f71e6d01b4439f88178c0f571be46c0138620"
|
||||||
integrity sha512-n33drkd84G5Mu2BkUGawZXmm+IFPuRv7GpODfwEBs/CzZq2+BIZyAZmb03H9IgNbd7xaohZbtZ4/9Gb0xo5ssw==
|
integrity sha512-n33drkd84G5Mu2BkUGawZXmm+IFPuRv7GpODfwEBs/CzZq2+BIZyAZmb03H9IgNbd7xaohZbtZ4/9Gb0xo5ssw==
|
||||||
|
|
||||||
|
"@uploadthing/mime-types@0.3.5":
|
||||||
|
version "0.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@uploadthing/mime-types/-/mime-types-0.3.5.tgz#6a4ed43ff9ac42d10203b15ea6d4090f0a87d413"
|
||||||
|
integrity sha512-iYOmod80XXOSe4NVvaUG9FsS91YGPUaJMTBj52Nwu0G2aTzEN6Xcl0mG1rWqXJ4NUH8MzjVqg+tQND5TPkJWhg==
|
||||||
|
|
||||||
|
"@uploadthing/react@^7.3.1":
|
||||||
|
version "7.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@uploadthing/react/-/react-7.3.1.tgz#c720dd1cb9210427fde9280d59456079e8fbfe3a"
|
||||||
|
integrity sha512-yIAFw46ZO/NPb74zpomwn6Hf2ZX/Ws+vNlR4oKNLJ7YtJ+/bqERclzC3xnRVi/pT47ctISlqXQFGiXUn85wg5Q==
|
||||||
|
dependencies:
|
||||||
|
"@uploadthing/shared" "7.1.8"
|
||||||
|
file-selector "0.6.0"
|
||||||
|
|
||||||
|
"@uploadthing/shared@7.1.8":
|
||||||
|
version "7.1.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/@uploadthing/shared/-/shared-7.1.8.tgz#5e34a270285badf6f53f4d9c033854eae2df0a18"
|
||||||
|
integrity sha512-OA9ZrTfILOCt1G93wOD7dZmS653z99Nr3isZpIxzBO3y4B2geKFmPjJUZClig2RrAWLKr2VUYToXKfd9D/wP9w==
|
||||||
|
dependencies:
|
||||||
|
"@uploadthing/mime-types" "0.3.5"
|
||||||
|
effect "3.14.21"
|
||||||
|
sqids "^0.3.0"
|
||||||
|
|
||||||
"@vercel/analytics@^1.3.1":
|
"@vercel/analytics@^1.3.1":
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vercel/analytics/-/analytics-1.5.0.tgz#073f93694897414b21a8495e2619bbf64447dcaa"
|
resolved "https://registry.yarnpkg.com/@vercel/analytics/-/analytics-1.5.0.tgz#073f93694897414b21a8495e2619bbf64447dcaa"
|
||||||
@ -6831,6 +6923,11 @@ destroy@1.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
||||||
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
|
||||||
|
|
||||||
|
detect-libc@^2.0.1:
|
||||||
|
version "2.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
|
||||||
|
integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
|
||||||
|
|
||||||
detect-libc@^2.0.3:
|
detect-libc@^2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
|
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
|
||||||
@ -7018,6 +7115,14 @@ ee-first@1.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||||
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
||||||
|
|
||||||
|
effect@3.14.21:
|
||||||
|
version "3.14.21"
|
||||||
|
resolved "https://registry.yarnpkg.com/effect/-/effect-3.14.21.tgz#140ebc4ee99aa14cefe11e3aadcff66a12d1692f"
|
||||||
|
integrity sha512-TKR7zfWcuZgEdWd+oIGA8LdREj/c+1Q0wz4pWqQtYT7VHnkW/QQEYCXgrDI5dT6lJgRTgyQAC1bAnpAf6MdjIA==
|
||||||
|
dependencies:
|
||||||
|
"@standard-schema/spec" "^1.0.0"
|
||||||
|
fast-check "^3.23.1"
|
||||||
|
|
||||||
embla-carousel-react@^8.5.2:
|
embla-carousel-react@^8.5.2:
|
||||||
version "8.6.0"
|
version "8.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz#b737042a32761c38d6614593653b3ac619477bd1"
|
resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz#b737042a32761c38d6614593653b3ac619477bd1"
|
||||||
@ -7896,6 +8001,13 @@ extract-zip@^2.0.1:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@types/yauzl" "^2.9.1"
|
"@types/yauzl" "^2.9.1"
|
||||||
|
|
||||||
|
fast-check@^3.23.1:
|
||||||
|
version "3.23.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.23.2.tgz#0129f1eb7e4f500f58e8290edc83c670e4a574a2"
|
||||||
|
integrity sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==
|
||||||
|
dependencies:
|
||||||
|
pure-rand "^6.1.0"
|
||||||
|
|
||||||
fast-deep-equal@3.1.3, fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
fast-deep-equal@3.1.3, fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||||
version "3.1.3"
|
version "3.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||||
@ -8020,6 +8132,13 @@ file-entry-cache@^8.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
flat-cache "^4.0.0"
|
flat-cache "^4.0.0"
|
||||||
|
|
||||||
|
file-selector@0.6.0:
|
||||||
|
version "0.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.6.0.tgz#fa0a8d9007b829504db4d07dd4de0310b65287dc"
|
||||||
|
integrity sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==
|
||||||
|
dependencies:
|
||||||
|
tslib "^2.4.0"
|
||||||
|
|
||||||
fill-range@^7.1.1:
|
fill-range@^7.1.1:
|
||||||
version "7.1.1"
|
version "7.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
|
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
|
||||||
@ -8040,6 +8159,11 @@ finalhandler@1.3.1:
|
|||||||
statuses "2.0.1"
|
statuses "2.0.1"
|
||||||
unpipe "~1.0.0"
|
unpipe "~1.0.0"
|
||||||
|
|
||||||
|
find-my-way-ts@^0.1.5:
|
||||||
|
version "0.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/find-my-way-ts/-/find-my-way-ts-0.1.5.tgz#9de9494f19e0319d4f6366bb91d6bf7952af7874"
|
||||||
|
integrity sha512-4GOTMrpGQVzsCH2ruUn2vmwzV/02zF4q+ybhCIrw/Rkt3L8KWcycdC6aJMctJzwN4fXD4SD5F/4B9Sksh5rE0A==
|
||||||
|
|
||||||
find-up@^5.0.0:
|
find-up@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
|
resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
|
||||||
@ -11277,6 +11401,32 @@ ms@2.1.3, ms@^2.1.1, ms@^2.1.3:
|
|||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||||
|
|
||||||
|
msgpackr-extract@^3.0.2:
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012"
|
||||||
|
integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==
|
||||||
|
dependencies:
|
||||||
|
node-gyp-build-optional-packages "5.2.2"
|
||||||
|
optionalDependencies:
|
||||||
|
"@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3"
|
||||||
|
"@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3"
|
||||||
|
"@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3"
|
||||||
|
"@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3"
|
||||||
|
"@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3"
|
||||||
|
"@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3"
|
||||||
|
|
||||||
|
msgpackr@^1.11.2:
|
||||||
|
version "1.11.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.2.tgz#4463b7f7d68f2e24865c395664973562ad24473d"
|
||||||
|
integrity sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==
|
||||||
|
optionalDependencies:
|
||||||
|
msgpackr-extract "^3.0.2"
|
||||||
|
|
||||||
|
multipasta@^0.2.5:
|
||||||
|
version "0.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/multipasta/-/multipasta-0.2.5.tgz#fb3564c4c619b73f98e72e2a4bbd4f7fba153edf"
|
||||||
|
integrity sha512-c8eMDb1WwZcE02WVjHoOmUVk7fnKU/RmUcosHACglrWAuPQsEJv+E8430sXj6jNc1jHw0zrS16aCjQh4BcEb4A==
|
||||||
|
|
||||||
mute-stream@^2.0.0:
|
mute-stream@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b"
|
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b"
|
||||||
@ -11491,6 +11641,13 @@ node-fetch@^3.0.0:
|
|||||||
fetch-blob "^3.1.4"
|
fetch-blob "^3.1.4"
|
||||||
formdata-polyfill "^4.0.10"
|
formdata-polyfill "^4.0.10"
|
||||||
|
|
||||||
|
node-gyp-build-optional-packages@5.2.2:
|
||||||
|
version "5.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4"
|
||||||
|
integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==
|
||||||
|
dependencies:
|
||||||
|
detect-libc "^2.0.1"
|
||||||
|
|
||||||
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||||
@ -12301,6 +12458,11 @@ puppeteer@^22.14.0:
|
|||||||
devtools-protocol "0.0.1312386"
|
devtools-protocol "0.0.1312386"
|
||||||
puppeteer-core "22.15.0"
|
puppeteer-core "22.15.0"
|
||||||
|
|
||||||
|
pure-rand@^6.1.0:
|
||||||
|
version "6.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2"
|
||||||
|
integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==
|
||||||
|
|
||||||
qr.js@0.0.0:
|
qr.js@0.0.0:
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f"
|
resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f"
|
||||||
@ -13512,6 +13674,11 @@ sprintf-js@~1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||||
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
|
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
|
||||||
|
|
||||||
|
sqids@^0.3.0:
|
||||||
|
version "0.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/sqids/-/sqids-0.3.0.tgz#969eabe54a362682e44cb73fce2bfea84e504dec"
|
||||||
|
integrity sha512-lOQK1ucVg+W6n3FhRwwSeUijxe93b51Bfz5PMRMihVf1iVkl82ePQG7V5vwrhzB11v0NtsR25PSZRGiSomJaJw==
|
||||||
|
|
||||||
stable-hash@^0.0.5:
|
stable-hash@^0.0.5:
|
||||||
version "0.0.5"
|
version "0.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.5.tgz#94e8837aaeac5b4d0f631d2972adef2924b40269"
|
resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.5.tgz#94e8837aaeac5b4d0f631d2972adef2924b40269"
|
||||||
@ -14564,6 +14731,17 @@ unrs-resolver@^1.6.2:
|
|||||||
"@unrs/resolver-binding-win32-ia32-msvc" "1.6.3"
|
"@unrs/resolver-binding-win32-ia32-msvc" "1.6.3"
|
||||||
"@unrs/resolver-binding-win32-x64-msvc" "1.6.3"
|
"@unrs/resolver-binding-win32-x64-msvc" "1.6.3"
|
||||||
|
|
||||||
|
uploadthing@^7.7.2:
|
||||||
|
version "7.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/uploadthing/-/uploadthing-7.7.2.tgz#4a72ceb3eaa53564046e1831d626406fafb6a14c"
|
||||||
|
integrity sha512-Q8rp40vnh8g4+OHvocmf+YVoSi+6RWTKmemo5BgW7R8iFU2O2EYH/n+CIxPzxhYyH/QjhRF/pHoIMcUL/8OtSg==
|
||||||
|
dependencies:
|
||||||
|
"@effect/platform" "0.81.0"
|
||||||
|
"@standard-schema/spec" "1.0.0-beta.4"
|
||||||
|
"@uploadthing/mime-types" "0.3.5"
|
||||||
|
"@uploadthing/shared" "7.1.8"
|
||||||
|
effect "3.14.21"
|
||||||
|
|
||||||
uri-js@^4.2.2:
|
uri-js@^4.2.2:
|
||||||
version "4.4.1"
|
version "4.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
|
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user