From d208565a61773c8e1c6cd136c43ac5fe34cd593d Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Thu, 16 Apr 2026 22:54:35 +0100 Subject: [PATCH] fix: build errors --- backend/src/components/report/mii-form.tsx | 2 +- frontend/package.json | 1 - .../src/components/mii/author-buttons.tsx | 3 +-- .../src/components/mii/dating-preferences.tsx | 3 +-- .../src/components/mii/list/filter-menu.tsx | 3 +-- .../src/components/mii/list/gender-select.tsx | 2 +- .../src/components/mii/list/makeup-select.tsx | 2 +- .../src/components/mii/list/other-filters.tsx | 2 +- .../components/mii/list/platform-select.tsx | 2 +- frontend/src/components/pages/index.tsx | 9 +++++--- frontend/src/components/pages/mii.tsx | 5 ++--- frontend/src/components/pages/profile.tsx | 3 +-- .../src/components/profile-information.tsx | 5 ++--- frontend/src/components/submit-form/index.tsx | 2 +- .../submit-form/mii-editor/tabs/misc.tsx | 3 +-- pnpm-lock.yaml | 22 +++++++------------ shared/package.json | 1 - shared/src/index.ts | 2 +- shared/src/schemas.ts | 9 ++++---- shared/src/types.d.ts | 4 +++- 20 files changed, 37 insertions(+), 48 deletions(-) diff --git a/backend/src/components/report/mii-form.tsx b/backend/src/components/report/mii-form.tsx index b244f64..e65dd06 100644 --- a/backend/src/components/report/mii-form.tsx +++ b/backend/src/components/report/mii-form.tsx @@ -1,8 +1,8 @@ import { useState } from "react"; -import { type Mii, ReportReason } from "@tomodachi-share/backend"; import ReasonSelector from "./reason-selector"; import SubmitButton from "../submit-button"; +import { Mii, ReportReason } from "@prisma/client"; interface Props { mii: Mii; diff --git a/frontend/package.json b/frontend/package.json index 5263faf..f6135e6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,7 +22,6 @@ "@nanostores/react": "^1.1.0", "@swup/astro": "^1.8.0", "@tailwindcss/vite": "^4.2.2", - "@tomodachi-share/backend": "workspace:*", "@tomodachi-share/shared": "workspace:*", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", diff --git a/frontend/src/components/mii/author-buttons.tsx b/frontend/src/components/mii/author-buttons.tsx index 8c74efa..9ab3793 100644 --- a/frontend/src/components/mii/author-buttons.tsx +++ b/frontend/src/components/mii/author-buttons.tsx @@ -1,9 +1,8 @@ import { Icon } from "@iconify/react"; import DeleteMiiButton from "./delete-mii-button"; -import type { Mii } from "@tomodachi-share/backend"; interface Props { - mii: Mii | any; + mii: any; } export default function AuthorButtons({ mii }: Props) { diff --git a/frontend/src/components/mii/dating-preferences.tsx b/frontend/src/components/mii/dating-preferences.tsx index b3cafb4..4f769f9 100644 --- a/frontend/src/components/mii/dating-preferences.tsx +++ b/frontend/src/components/mii/dating-preferences.tsx @@ -1,6 +1,5 @@ import { type ChangeEvent } from "react"; -import { MiiGender } from "@tomodachi-share/backend"; -import { type SwitchMiiInstructions } from "@tomodachi-share/shared"; +import { type MiiGender, type SwitchMiiInstructions } from "@tomodachi-share/shared"; interface Props { data: SwitchMiiInstructions["datingPreferences"]; diff --git a/frontend/src/components/mii/list/filter-menu.tsx b/frontend/src/components/mii/list/filter-menu.tsx index f37e69c..2d52520 100644 --- a/frontend/src/components/mii/list/filter-menu.tsx +++ b/frontend/src/components/mii/list/filter-menu.tsx @@ -1,13 +1,12 @@ import { useEffect, useMemo, useState } from "react"; import { Icon } from "@iconify/react"; -import type { MiiGender, MiiMakeup, MiiPlatform } from "@tomodachi-share/backend"; - import PlatformSelect from "./platform-select"; import TagFilter from "./tag-filter"; import GenderSelect from "./gender-select"; import OtherFilters from "./other-filters"; import MakeupSelect from "./makeup-select"; +import type { MiiGender, MiiMakeup, MiiPlatform } from "@tomodachi-share/shared"; export default function FilterMenu() { const searchParams = new URLSearchParams(window.location.search); diff --git a/frontend/src/components/mii/list/gender-select.tsx b/frontend/src/components/mii/list/gender-select.tsx index 2a9e091..aa12165 100644 --- a/frontend/src/components/mii/list/gender-select.tsx +++ b/frontend/src/components/mii/list/gender-select.tsx @@ -1,6 +1,6 @@ import { useState, useTransition } from "react"; import { Icon } from "@iconify/react"; -import type { MiiGender, MiiPlatform } from "@tomodachi-share/backend"; +import type { MiiGender, MiiPlatform } from "@tomodachi-share/shared"; export default function GenderSelect() { const searchParams = new URLSearchParams(window.location.search); diff --git a/frontend/src/components/mii/list/makeup-select.tsx b/frontend/src/components/mii/list/makeup-select.tsx index 934cd78..839765d 100644 --- a/frontend/src/components/mii/list/makeup-select.tsx +++ b/frontend/src/components/mii/list/makeup-select.tsx @@ -1,6 +1,6 @@ import { useState, useTransition } from "react"; import { Icon } from "@iconify/react"; -import { type MiiMakeup } from "@tomodachi-share/backend"; +import type { MiiMakeup } from "@tomodachi-share/shared"; export default function MakeupSelect() { const searchParams = new URLSearchParams(window.location.search); diff --git a/frontend/src/components/mii/list/other-filters.tsx b/frontend/src/components/mii/list/other-filters.tsx index a1f1d15..61fb96d 100644 --- a/frontend/src/components/mii/list/other-filters.tsx +++ b/frontend/src/components/mii/list/other-filters.tsx @@ -1,4 +1,4 @@ -import { type MiiPlatform } from "@tomodachi-share/backend"; +import type { MiiPlatform } from "@tomodachi-share/shared"; import { type ChangeEvent, useState, useTransition } from "react"; export default function OtherFilters() { diff --git a/frontend/src/components/mii/list/platform-select.tsx b/frontend/src/components/mii/list/platform-select.tsx index d67912a..6be08f0 100644 --- a/frontend/src/components/mii/list/platform-select.tsx +++ b/frontend/src/components/mii/list/platform-select.tsx @@ -1,6 +1,6 @@ import { useState, useTransition } from "react"; import { Icon } from "@iconify/react"; -import type { MiiPlatform } from "@tomodachi-share/backend"; +import type { MiiPlatform } from "@tomodachi-share/shared"; export default function PlatformSelect() { const searchParams = new URLSearchParams(window.location.search); diff --git a/frontend/src/components/pages/index.tsx b/frontend/src/components/pages/index.tsx index abfd9fa..4cacd33 100644 --- a/frontend/src/components/pages/index.tsx +++ b/frontend/src/components/pages/index.tsx @@ -3,13 +3,12 @@ import FilterMenu from "../mii/list/filter-menu"; import SortSelect from "../mii/list/sort-select"; import MiiGrid from "../mii/list/mii-grid"; import Pagination from "../pagination"; -import { type Mii } from "@tomodachi-share/backend"; import Skeleton from "../mii/list/skeleton"; interface ApiResponse { totalCount: number; filteredCount: number; - miis: Mii[]; + miis: any[]; lastPage: number; } @@ -40,8 +39,10 @@ export default function IndexPage() { {searchParams.get("tags") ? `Miis tagged with '${searchParams.get("tags")}' - TomodachiShare` : "TomodachiShare - index mii list"} +

We're currently going through some major code changes therefore some features won't work.

+ }> - {!loading && ( + {!loading && data ? (
@@ -69,6 +70,8 @@ export default function IndexPage() {
+ ) : ( +

No Miis found :( Has the server died?

)} diff --git a/frontend/src/components/pages/mii.tsx b/frontend/src/components/pages/mii.tsx index 2c35d16..5bebc7f 100644 --- a/frontend/src/components/pages/mii.tsx +++ b/frontend/src/components/pages/mii.tsx @@ -8,7 +8,6 @@ import ShareMiiButton from "../mii/share-mii-button"; import ThreeDsScanTutorialButton from "../tutorial/3ds-scan"; import SwitchAddMiiTutorialButton from "../tutorial/switch-add-mii"; import MiiInstructions from "../mii/instructions"; -import type { Mii } from "@tomodachi-share/backend"; import { Icon } from "@iconify/react"; import { useEffect, useState } from "react"; @@ -17,7 +16,7 @@ interface Props { } export default function MiiPage({ id }: Props) { - const [mii, setMii] = useState(null); + const [mii, setMii] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { @@ -291,7 +290,7 @@ export default function MiiPage({ id }: Props) { {/* Buttons */}
- + {/* */} diff --git a/frontend/src/components/pages/profile.tsx b/frontend/src/components/pages/profile.tsx index bdda1cc..fbb083f 100644 --- a/frontend/src/components/pages/profile.tsx +++ b/frontend/src/components/pages/profile.tsx @@ -1,4 +1,3 @@ -import type { User } from "@tomodachi-share/backend"; import { useEffect, useState } from "react"; import ProfileInformation from "../profile-information"; @@ -7,7 +6,7 @@ interface Props { } export default function ProfilePage({ id }: Props) { - const [user, setUser] = useState(null); + const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { diff --git a/frontend/src/components/profile-information.tsx b/frontend/src/components/profile-information.tsx index 6331501..8772869 100644 --- a/frontend/src/components/profile-information.tsx +++ b/frontend/src/components/profile-information.tsx @@ -1,19 +1,18 @@ import { Icon } from "@iconify/react"; import Description from "./description"; -import { type User } from "@tomodachi-share/backend"; import { useStore } from "@nanostores/react"; import { session } from "../session"; interface Props { - user?: User | any; + user?: any; page?: "settings" | "likes"; } export default function ProfileInformation({ user, page }: Props) { const $session = useStore(session); - const isAdmin = (!user ? $session.user.id : user.id) === Number(import.meta.env.PUBLIC_ADMIN_USER_ID); + const isAdmin = (!user ? $session?.user.id : user.id) === Number(import.meta.env.PUBLIC_ADMIN_USER_ID); const isContributor = import.meta.env.PUBLIC_CONTRIBUTORS_USER_IDS?.split(",").includes(user.id); const isOwnProfile = !user || $session?.user?.id === user.id; diff --git a/frontend/src/components/submit-form/index.tsx b/frontend/src/components/submit-form/index.tsx index d0d4782..ba474cc 100644 --- a/frontend/src/components/submit-form/index.tsx +++ b/frontend/src/components/submit-form/index.tsx @@ -3,7 +3,6 @@ import { type FileWithPath } from "react-dropzone"; import { Icon } from "@iconify/react"; import qrcode from "qrcode-generator"; -import { MiiGender, MiiMakeup, MiiPlatform } from "@tomodachi-share/backend"; import { nameSchema, tagsSchema } from "@tomodachi-share/shared/schemas"; import { defaultInstructions, type SwitchMiiInstructions, ThreeDsTomodachiLifeMii, convertQrCode } from "@tomodachi-share/shared"; @@ -21,6 +20,7 @@ import LikeButton from "../like-button"; import Carousel from "../carousel"; import SubmitButton from "../submit-button"; import Dropzone from "../dropzone"; +import type { MiiPlatform, MiiGender, MiiMakeup } from "@tomodachi-share/shared"; export default function SubmitForm() { const [files, setFiles] = useState([]); diff --git a/frontend/src/components/submit-form/mii-editor/tabs/misc.tsx b/frontend/src/components/submit-form/mii-editor/tabs/misc.tsx index 5b78331..caac609 100644 --- a/frontend/src/components/submit-form/mii-editor/tabs/misc.tsx +++ b/frontend/src/components/submit-form/mii-editor/tabs/misc.tsx @@ -1,6 +1,5 @@ import { useState } from "react"; -import { MiiGender } from "@tomodachi-share/backend"; -import type { SwitchMiiInstructions } from "@tomodachi-share/shared"; +import type { MiiGender, SwitchMiiInstructions } from "@tomodachi-share/shared"; import EnhancedSlider from "../enhanced-slider"; import DatingPreferencesViewer from "../../../mii/dating-preferences"; import VoiceViewer from "../../../mii/voice-viewer"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a89da7..ae3f3cf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -170,9 +170,6 @@ importers: '@tailwindcss/vite': specifier: ^4.2.2 version: 4.2.2(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.1)) - '@tomodachi-share/backend': - specifier: workspace:* - version: link:../backend '@tomodachi-share/shared': specifier: workspace:* version: link:../shared @@ -246,9 +243,6 @@ importers: '@2toad/profanity': specifier: ^3.3.0 version: 3.3.0 - '@tomodachi-share/backend': - specifier: workspace:* - version: link:../backend bit-buffer: specifier: ^0.3.0 version: 0.3.0 @@ -8548,8 +8542,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.3 eslint: 10.2.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@10.2.0(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@10.2.0(jiti@2.6.1)) @@ -8571,7 +8565,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.0(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -8582,22 +8576,22 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2) eslint: 10.2.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@10.2.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -8608,7 +8602,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.2.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)))(eslint@10.2.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.2(eslint@10.2.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@10.2.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 diff --git a/shared/package.json b/shared/package.json index 561be80..3b2376e 100644 --- a/shared/package.json +++ b/shared/package.json @@ -3,7 +3,6 @@ "version": "1.0.0", "dependencies": { "@2toad/profanity": "^3.3.0", - "@tomodachi-share/backend": "workspace:*", "bit-buffer": "^0.3.0", "sjcl-with-all": "1.0.8", "zod": "^4.3.6" diff --git a/shared/src/index.ts b/shared/src/index.ts index 788362f..87d2715 100644 --- a/shared/src/index.ts +++ b/shared/src/index.ts @@ -2,4 +2,4 @@ export * from "./constants"; export * from "./qr-codes"; export * from "./switch"; export * from "./three-ds-tomodachi-life-mii"; -export type { SwitchMiiInstructions } from "./types"; +export type { SwitchMiiInstructions, MiiGender, MiiMakeup, MiiPlatform } from "./types"; diff --git a/shared/src/schemas.ts b/shared/src/schemas.ts index 44d687d..2f639fa 100644 --- a/shared/src/schemas.ts +++ b/shared/src/schemas.ts @@ -1,4 +1,3 @@ -import { MiiGender, MiiMakeup, MiiPlatform } from "@tomodachi-share/backend"; import { z } from "zod"; // profanity censoring bypasses the regex in some of these but I think it's funny @@ -58,9 +57,9 @@ export const searchSchema = z.object({ .map((tag) => tag.trim()) .filter((tag) => tag.length > 0), ), - platform: z.enum(MiiPlatform, { error: "Platform must be either 'THREE_DS', or 'SWITCH'" }).optional(), - gender: z.enum(MiiGender, { error: "Gender must be either 'MALE', 'FEMALE', or 'NONBINARY' if on Switch platform" }).optional(), - makeup: z.enum(MiiMakeup, { error: "Makeup must be either 'FULL', 'PARTIAL', or 'NONE'" }).optional(), + platform: z.enum(["THREE_DS", "SWITCH"], { error: "Platform must be either 'THREE_DS', or 'SWITCH'" }).optional(), + gender: z.enum(["MALE", "FEMALE", "NONBINARY"], { error: "Gender must be either 'MALE', 'FEMALE', or 'NONBINARY' if on Switch platform" }).optional(), + makeup: z.enum(["FULL", "PARTIAL", "NONE"], { error: "Makeup must be either 'FULL', 'PARTIAL', or 'NONE'" }).optional(), allowCopying: z.coerce.boolean({ error: "Allow Copying must be either true or false" }).optional(), quarantined: z.coerce.boolean({ error: "Quarantined must be either true or false" }).optional(), // todo: incorporate tagsSchema @@ -286,7 +285,7 @@ export const switchMiiInstructionsSchema = z .optional(), height: z.number().int().min(0).max(128).optional(), weight: z.number().int().min(0).max(128).optional(), - datingPreferences: z.array(z.enum(MiiGender)).optional(), + datingPreferences: z.array(z.enum(["MALE", "FEMALE", "NONBINARY"])).optional(), birthday: z .object({ day: z.number().int().min(1).max(31).optional(), diff --git a/shared/src/types.d.ts b/shared/src/types.d.ts index f314e8f..1b513b0 100644 --- a/shared/src/types.d.ts +++ b/shared/src/types.d.ts @@ -1,4 +1,6 @@ -import { MiiGender } from "@tomodachi-share/backend"; +type MiiGender = "MALE" | "FEMALE" | "NONBINARY"; +type MiiPlatform = "THREE_DS" | "SWITCH"; +type MiiMakeup = "FULL" | "PARTIAL" | "NONE"; export interface SwitchMiiInstructions { head: {