mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-07 19:55:46 -05:00
Fetch data from server to route
This commit is contained in:
7
App.tsx
7
App.tsx
@@ -1,11 +1,14 @@
|
||||
import { Router } from "solid-app-router";
|
||||
import type { Component } from "solid-js";
|
||||
import Layout from "./scenes/layout";
|
||||
import { Routes } from "./Routes";
|
||||
import { Layout } from "./scenes/layout/components/Layout";
|
||||
|
||||
const App: Component = () => {
|
||||
return (
|
||||
<Router>
|
||||
<Layout>routes here</Layout>
|
||||
<Layout>
|
||||
<Routes />
|
||||
</Layout>
|
||||
</Router>
|
||||
);
|
||||
};
|
||||
|
||||
32
Routes.tsx
Normal file
32
Routes.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
import { Routes as SolidAppRoutes, Route } from "solid-app-router";
|
||||
import { lazy } from "solid-js";
|
||||
import HelloData from "./scenes/tournament/components/TournamentsPage.data";
|
||||
|
||||
const TournamentsPage = lazy(
|
||||
() => import("./scenes/tournament/components/TournamentsPage")
|
||||
);
|
||||
|
||||
export function Routes() {
|
||||
return (
|
||||
<SolidAppRoutes>
|
||||
{/* <Route path="/users/:id" element={<User />}>
|
||||
<Route path="/" element={<UserHome />} />
|
||||
<Route path="/settings" element={<UserSettings />} />
|
||||
<Route path="/*all" element={<UserNotFound />} />
|
||||
</Route> */}
|
||||
<Route
|
||||
path="/to/:identifier"
|
||||
element={<TournamentsPage />}
|
||||
data={HelloData}
|
||||
>
|
||||
<Route path="/*all" element={() => <>overview</>} />
|
||||
<Route path="/map-pool" element={() => <>map pool</>} />
|
||||
<Route path="/bracket" element={() => <>bracket</>} />
|
||||
<Route path="/teams" element={() => <>teams</>} />
|
||||
<Route path="/streams" element={() => <>streams</>} />
|
||||
</Route>
|
||||
<Route path="/" element={() => <>home!</>} />
|
||||
<Route path="/*all" element={() => <>Not found</>} />
|
||||
</SolidAppRoutes>
|
||||
);
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<link rel="shortcut icon" type="image/ico" href="/src/assets/favicon.ico" />
|
||||
<link rel="shortcut icon" type="image/ico" href="/img/layout/logo.webp" />
|
||||
<title>sendou.ink</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
83
package-lock.json
generated
83
package-lock.json
generated
@@ -1,14 +1,15 @@
|
||||
{
|
||||
"name": "vite-template-solid",
|
||||
"name": "sendou.ink",
|
||||
"version": "0.0.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "vite-template-solid",
|
||||
"name": "sendou.ink",
|
||||
"version": "0.0.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@trpc/client": "^9.13.0",
|
||||
"normalize.css": "^8.0.1",
|
||||
"solid-app-router": "^0.1.11",
|
||||
"solid-js": "^1.1.3"
|
||||
@@ -397,6 +398,17 @@
|
||||
"@babel/core": "^7.0.0-0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.16.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz",
|
||||
"integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==",
|
||||
"dependencies": {
|
||||
"regenerator-runtime": "^0.13.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/template": {
|
||||
"version": "7.16.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz",
|
||||
@@ -444,6 +456,26 @@
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@trpc/client": {
|
||||
"version": "9.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@trpc/client/-/client-9.13.0.tgz",
|
||||
"integrity": "sha512-HnXGi141+dZ/M02NXZI5FdFPSr2p8kkYn8qI2h2VrrOC05H6qZHZdmVnoOCRF5qdmDO/PY6b7eQzXSMr+ApeiA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@trpc/server": "9.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@trpc/server": {
|
||||
"version": "9.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@trpc/server/-/server-9.13.0.tgz",
|
||||
"integrity": "sha512-UooZvh9mCsP43fEC9DVsjxGwj/XzBhiHcvmPe5QbOVME+s1s18oUIcliGp8KX5bHJSA3C2Yuqu72jLhB2kuxtg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
@@ -1030,6 +1062,11 @@
|
||||
"url": "https://opencollective.com/postcss/"
|
||||
}
|
||||
},
|
||||
"node_modules/regenerator-runtime": {
|
||||
"version": "0.13.9",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
|
||||
"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||
@@ -1140,6 +1177,12 @@
|
||||
"integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "4.4.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
|
||||
@@ -1479,6 +1522,14 @@
|
||||
"@babel/plugin-transform-typescript": "^7.16.0"
|
||||
}
|
||||
},
|
||||
"@babel/runtime": {
|
||||
"version": "7.16.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz",
|
||||
"integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.4"
|
||||
}
|
||||
},
|
||||
"@babel/template": {
|
||||
"version": "7.16.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz",
|
||||
@@ -1517,6 +1568,23 @@
|
||||
"to-fast-properties": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"@trpc/client": {
|
||||
"version": "9.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@trpc/client/-/client-9.13.0.tgz",
|
||||
"integrity": "sha512-HnXGi141+dZ/M02NXZI5FdFPSr2p8kkYn8qI2h2VrrOC05H6qZHZdmVnoOCRF5qdmDO/PY6b7eQzXSMr+ApeiA==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.9.0"
|
||||
}
|
||||
},
|
||||
"@trpc/server": {
|
||||
"version": "9.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@trpc/server/-/server-9.13.0.tgz",
|
||||
"integrity": "sha512-UooZvh9mCsP43fEC9DVsjxGwj/XzBhiHcvmPe5QbOVME+s1s18oUIcliGp8KX5bHJSA3C2Yuqu72jLhB2kuxtg==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
@@ -1916,6 +1984,11 @@
|
||||
"source-map-js": "^0.6.2"
|
||||
}
|
||||
},
|
||||
"regenerator-runtime": {
|
||||
"version": "0.13.9",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
|
||||
"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||
@@ -1998,6 +2071,12 @@
|
||||
"integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==",
|
||||
"dev": true
|
||||
},
|
||||
"tslib": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
|
||||
"peer": true
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.4.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"vite-plugin-solid": "^2.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@trpc/client": "^9.13.0",
|
||||
"normalize.css": "^8.0.1",
|
||||
"solid-app-router": "^0.1.11",
|
||||
"solid-js": "^1.1.3"
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
export { Layout as default } from "./components/Layout";
|
||||
19
scenes/tournament/components/TournamentsPage.data.ts
Normal file
19
scenes/tournament/components/TournamentsPage.data.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { useData } from "solid-app-router";
|
||||
import { createResource } from "solid-js";
|
||||
import { trpcClient } from "../../../utils/trpc";
|
||||
|
||||
function fetchHello(input: string) {
|
||||
return trpcClient.query("hello", input);
|
||||
}
|
||||
|
||||
export default function HelloData({
|
||||
params,
|
||||
}: {
|
||||
params: { identifier: string };
|
||||
}) {
|
||||
const [user] = createResource(() => params.identifier, fetchHello);
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
export const useHelloData = () => useData<() => string>();
|
||||
14
scenes/tournament/components/TournamentsPage.tsx
Normal file
14
scenes/tournament/components/TournamentsPage.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
import { Outlet, useData } from "solid-app-router";
|
||||
|
||||
export default function TournamentsPage() {
|
||||
const user = useData<() => string>();
|
||||
|
||||
return (
|
||||
<>
|
||||
response: "{user()}"
|
||||
<p>
|
||||
<Outlet />
|
||||
</p>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { EventEmitter } from "events";
|
||||
import express from "express";
|
||||
import cors from "cors";
|
||||
import * as trpc from "@trpc/server";
|
||||
import { z } from "zod";
|
||||
import * as trpcExpress from "@trpc/server/adapters/express/dist/trpc-server-adapters-express.cjs";
|
||||
@@ -121,6 +122,8 @@ async function main() {
|
||||
// express implementation
|
||||
const app = express();
|
||||
|
||||
app.use(cors());
|
||||
|
||||
app.use((req, _res, next) => {
|
||||
// request logger
|
||||
console.log("⬅️ ", req.method, req.path, req.body ?? req.query);
|
||||
|
||||
48
server/package-lock.json
generated
48
server/package-lock.json
generated
@@ -10,10 +10,12 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@trpc/server": "^9.13.0",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.17.1",
|
||||
"zod": "^3.11.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/cors": "^2.8.12",
|
||||
"@types/express": "^4.17.13",
|
||||
"ts-node": "^10.4.0"
|
||||
}
|
||||
@@ -90,6 +92,12 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/cors": {
|
||||
"version": "2.8.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
|
||||
"integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/express": {
|
||||
"version": "4.17.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz",
|
||||
@@ -251,6 +259,18 @@
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||
},
|
||||
"node_modules/cors": {
|
||||
"version": "2.8.5",
|
||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
||||
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
||||
"dependencies": {
|
||||
"object-assign": "^4",
|
||||
"vary": "^1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/create-require": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
|
||||
@@ -495,6 +515,14 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
@@ -815,6 +843,12 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/cors": {
|
||||
"version": "2.8.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
|
||||
"integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/express": {
|
||||
"version": "4.17.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz",
|
||||
@@ -949,6 +983,15 @@
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||
},
|
||||
"cors": {
|
||||
"version": "2.8.5",
|
||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
||||
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
||||
"requires": {
|
||||
"object-assign": "^4",
|
||||
"vary": "^1"
|
||||
}
|
||||
},
|
||||
"create-require": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
|
||||
@@ -1139,6 +1182,11 @@
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
|
||||
@@ -12,10 +12,12 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@trpc/server": "^9.13.0",
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.17.1",
|
||||
"zod": "^3.11.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/cors": "^2.8.12",
|
||||
"@types/express": "^4.17.13",
|
||||
"ts-node": "^10.4.0"
|
||||
}
|
||||
|
||||
6
utils/trpc.ts
Normal file
6
utils/trpc.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import type { AppRouter } from "../server";
|
||||
import { createTRPCClient } from "@trpc/client";
|
||||
|
||||
export const trpcClient = createTRPCClient<AppRouter>({
|
||||
url: "http://localhost:2021/trpc",
|
||||
});
|
||||
Reference in New Issue
Block a user