housekeeping

This commit is contained in:
2025-08-26 18:37:27 -04:00
parent 0f015841ff
commit e5f432dc98
14 changed files with 32 additions and 77 deletions

View File

@@ -1,8 +1,6 @@
import { createResource } from "solid-js";
import { type Api } from "../../server/src/api";
import { treaty } from "@elysiajs/eden"; import { treaty } from "@elysiajs/eden";
import { EdenWS } from "@elysiajs/eden/treaty";
import { fromEvents } from "kefir"; import { fromEvents } from "kefir";
import { type Api } from "@games/server/src/api";
const { api } = treaty<Api>( const { api } = treaty<Api>(
import.meta.env.DEV ? "http://localhost:5001" : window.location.origin, import.meta.env.DEV ? "http://localhost:5001" : window.location.origin,

View File

@@ -2,10 +2,9 @@ import { Route, Router } from "@solidjs/router";
import { createResource, lazy, Suspense } from "solid-js"; import { createResource, lazy, Suspense } from "solid-js";
import { render } from "solid-js/web"; import { render } from "solid-js/web";
import "virtual:uno.css"; import "virtual:uno.css";
import pkg from "../package.json"; import pkg from "^/package.json";
import "./style.css"; import "./style.css";
import api from "./api"; import api from "./api";
import Cookies from "js-cookie";
import { mePromise } from "./profile"; import { mePromise } from "./profile";
const Profile = () => { const Profile = () => {

View File

@@ -1,7 +1,7 @@
import { Component, createResource, JSX, Suspense } from "solid-js"; import { Component, Suspense } from "solid-js";
import type { Card } from "@games/shared/cards";
import { Clickable, Stylable } from "./toolbox"; import { Clickable, Stylable } from "./toolbox";
import { Card } from "../../../shared/cards";
const cardToSvgFilename = (card: Card) => { const cardToSvgFilename = (card: Card) => {
if (card.kind == "joker") { if (card.kind == "joker") {

View File

@@ -1,9 +1,9 @@
import { Accessor, createContext, useContext } from "solid-js"; import { Accessor, createContext, useContext } from "solid-js";
import { import type {
SimpleAction, SimpleAction,
SimplePlayerView, SimplePlayerView,
} from "../../../server/src/games/simple"; } from "@games/server/src/games/simple";
import { me, profile } from "../profile"; import { me, profile } from "~/profile";
import Hand from "./Hand"; import Hand from "./Hand";
import Pile from "./Pile"; import Pile from "./Pile";
import { TableContext } from "./Table"; import { TableContext } from "./Table";

View File

@@ -1,5 +1,5 @@
import { Component, For } from "solid-js"; import { Component, For } from "solid-js";
import type { Card as TCard, Hand as THand } from "../../../shared/cards"; import type { Card as TCard, Hand as THand } from "@games/shared/cards";
import Card from "./Card"; import Card from "./Card";
import { Stylable } from "./toolbox"; import { Stylable } from "./toolbox";

View File

@@ -1,8 +1,8 @@
import { createSignal, useContext } from "solid-js"; import { createSignal, useContext } from "solid-js";
import { playerColor, profile } from "../profile"; import { playerColor, profile } from "~/profile";
import { TableContext } from "./Table"; import { TableContext } from "./Table";
import { Stylable } from "./toolbox"; import { Stylable } from "./toolbox";
import { createObservable, createObservableWithInit } from "../fn"; import { createObservable, createObservableWithInit } from "~/fn";
export default (props: { playerKey: string } & Stylable) => { export default (props: { playerKey: string } & Stylable) => {
const table = useContext(TableContext); const table = useContext(TableContext);

View File

@@ -1,20 +1,19 @@
import type { TWsIn, TWsOut } from "@games/server/src/table";
import { fromPromise, Stream } from "kefir";
import { import {
Accessor, Accessor,
createContext, createContext,
createEffect, createEffect,
createResource,
createSignal, createSignal,
For, For,
onCleanup, onCleanup,
Show, Show,
} from "solid-js"; } from "solid-js";
import { TWsIn, TWsOut } from "../../../server/src/table"; import api, { fromWebsocket } from "~/api";
import api, { fromWebsocket } from "../api"; import { createObservable, createObservableWithInit, cx } from "~/fn";
import { createObservable, createObservableWithInit, cx } from "../fn"; import { me } from "~/profile";
import { me } from "../profile";
import Game from "./Game"; import Game from "./Game";
import Player from "./Player"; import Player from "./Player";
import { fromPromise, Stream } from "kefir";
export const TableContext = createContext<{ export const TableContext = createContext<{
view: Accessor<any>; view: Accessor<any>;

View File

@@ -1,16 +0,0 @@
import { A, useParams } from "@solidjs/router";
import Game from "../../components/Game";
export default () => {
const params = useParams<{ game: string; instance: string }>();
return (
<>
<Game instanceId={params.instance} />
<A href={`/${params.game}`} class="fixed tl m-4 px-2 py-1.5 button">
Back
</A>
</>
);
};

View File

@@ -1,33 +0,0 @@
import { A, useParams } from "@solidjs/router";
import { createEffect, createResource, For, Suspense } from "solid-js";
import api from "../../api";
export default () => {
const param = useParams<{ game: string }>();
const [instances, { refetch }] = createResource(
() => param.game,
async () => api.instances.get({ query: param }).then((res) => res.data)
);
return (
<Suspense>
<div style={{ padding: "20px" }}>
<p class="text-[40px]">{param.game}</p>
<button class="px-2 py-1.5 m-4 button">New Game</button>
<ul>
<For each={instances() ?? []}>
{(instance) => (
<li>
<A href={`/${param.game}/${instance.id}`}>
{instance.id}
</A>
</li>
)}
</For>
</ul>
</div>
</Suspense>
);
};

View File

@@ -1,8 +1,8 @@
import { A, useParams } from "@solidjs/router"; import { A, useParams } from "@solidjs/router";
import Table from "../components/Table"; import Table from "~/components/Table";
import { Show } from "solid-js"; import { Show } from "solid-js";
import { me } from "../profile"; import { me } from "~/profile";
export default () => { export default () => {
const { tableKey } = useParams(); const { tableKey } = useParams();
@@ -10,9 +10,6 @@ export default () => {
return ( return (
<Show when={me() != null}> <Show when={me() != null}>
<Table tableKey={tableKey} /> <Table tableKey={tableKey} />
<A href={"/"} class="fixed tl m-4 px-2 py-1.5 button">
Back
</A>
</Show> </Show>
); );
}; };

View File

@@ -1,6 +1,6 @@
import { A } from "@solidjs/router"; import { A } from "@solidjs/router";
import { createEffect, createResource, For } from "solid-js"; import { createEffect, createResource, For } from "solid-js";
import api from "../api"; import api from "~/api";
export default () => { export default () => {
const [games] = createResource(async () => const [games] = createResource(async () =>

View File

@@ -1,4 +1,5 @@
{ {
"extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"target": "ESNext", "target": "ESNext",
"module": "ESNext", "module": "ESNext",
@@ -12,9 +13,10 @@
"noEmit": true, "noEmit": true,
"isolatedModules": true, "isolatedModules": true,
"paths": { "paths": {
"~/*": ["./src/*"], "^/*": ["./*"],
"$/*": ["./"], "@games/*": ["./packages/*"],
"@/*": ["./public/*"] "$/*": ["./packages/client/*"],
"~/*": ["./packages/client/src/*"]
} }
} }
} }

View File

@@ -1,6 +1,7 @@
import { defineConfig } from "vite"; import { defineConfig } from "vite";
import solidPlugin from "vite-plugin-solid"; import solidPlugin from "vite-plugin-solid";
import UnoCSS from "unocss/vite"; import UnoCSS from "unocss/vite";
import path from "path";
export default defineConfig({ export default defineConfig({
plugins: [solidPlugin(), UnoCSS()], plugins: [solidPlugin(), UnoCSS()],
@@ -8,4 +9,12 @@ export default defineConfig({
outDir: "../server/public", outDir: "../server/public",
emptyOutDir: true, emptyOutDir: true,
}, },
resolve: {
alias: {
"^": path.resolve(__dirname, "../../"),
"@games": path.resolve(__dirname, "../"),
$: path.resolve(__dirname, "./"),
"~": path.resolve(__dirname, "./src"),
},
},
}); });

View File