aboutsummaryrefslogtreecommitdiff
path: root/web/pw-server
diff options
context:
space:
mode:
Diffstat (limited to 'web/pw-server')
-rw-r--r--web/pw-server/.eslintrc.cjs36
-rw-r--r--web/pw-server/.prettierrc8
-rw-r--r--web/pw-server/src/app.html20
-rw-r--r--web/pw-server/src/lib/auth.ts6
-rw-r--r--web/pw-server/src/routes/bots/[bot_id].svelte4
-rw-r--r--web/pw-server/src/routes/bots/index.svelte108
-rw-r--r--web/pw-server/src/routes/login.svelte56
-rw-r--r--web/pw-server/src/routes/register.svelte54
-rw-r--r--web/pw-server/svelte.config.js77
-rw-r--r--web/pw-server/tsconfig.json46
10 files changed, 206 insertions, 209 deletions
diff --git a/web/pw-server/.eslintrc.cjs b/web/pw-server/.eslintrc.cjs
index 3ccf435..09dcc6a 100644
--- a/web/pw-server/.eslintrc.cjs
+++ b/web/pw-server/.eslintrc.cjs
@@ -1,20 +1,20 @@
module.exports = {
- root: true,
- parser: '@typescript-eslint/parser',
- extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
- plugins: ['svelte3', '@typescript-eslint'],
- ignorePatterns: ['*.cjs'],
- overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],
- settings: {
- 'svelte3/typescript': () => require('typescript')
- },
- parserOptions: {
- sourceType: 'module',
- ecmaVersion: 2020
- },
- env: {
- browser: true,
- es2017: true,
- node: true
- }
+ root: true,
+ parser: "@typescript-eslint/parser",
+ extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"],
+ plugins: ["svelte3", "@typescript-eslint"],
+ ignorePatterns: ["*.cjs"],
+ overrides: [{ files: ["*.svelte"], processor: "svelte3/svelte3" }],
+ settings: {
+ "svelte3/typescript": () => require("typescript"),
+ },
+ parserOptions: {
+ sourceType: "module",
+ ecmaVersion: 2020,
+ },
+ env: {
+ browser: true,
+ es2017: true,
+ node: true,
+ },
};
diff --git a/web/pw-server/.prettierrc b/web/pw-server/.prettierrc
index cdb1126..8b9522d 100644
--- a/web/pw-server/.prettierrc
+++ b/web/pw-server/.prettierrc
@@ -1,6 +1,6 @@
{
- "useTabs": false,
- "singleQuote": false,
- "trailingComma": "es5",
- "printWidth": 100
+ "useTabs": false,
+ "singleQuote": false,
+ "trailingComma": "es5",
+ "printWidth": 100
}
diff --git a/web/pw-server/src/app.html b/web/pw-server/src/app.html
index 9c8080f..32f9591 100644
--- a/web/pw-server/src/app.html
+++ b/web/pw-server/src/app.html
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<html lang="en">
- <head>
- <meta charset="utf-8" />
- <meta name="description" content="" />
- <link rel="icon" href="/favicon.ico" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- %svelte.head%
- </head>
- <body>
- <div id="svelte">%svelte.body%</div>
- </body>
+ <head>
+ <meta charset="utf-8" />
+ <meta name="description" content="" />
+ <link rel="icon" href="/favicon.ico" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ %svelte.head%
+ </head>
+ <body>
+ <div id="svelte">%svelte.body%</div>
+ </body>
</html>
diff --git a/web/pw-server/src/lib/auth.ts b/web/pw-server/src/lib/auth.ts
index 436ec66..3f77c58 100644
--- a/web/pw-server/src/lib/auth.ts
+++ b/web/pw-server/src/lib/auth.ts
@@ -1,7 +1,7 @@
export function set_session_token(token: string) {
- window.localStorage.setItem('session', token);
+ window.localStorage.setItem("session", token);
}
export function get_session_token(): string | null {
- return window.localStorage.getItem('session');
-} \ No newline at end of file
+ return window.localStorage.getItem("session");
+}
diff --git a/web/pw-server/src/routes/bots/[bot_id].svelte b/web/pw-server/src/routes/bots/[bot_id].svelte
index 2556d73..955f1c6 100644
--- a/web/pw-server/src/routes/bots/[bot_id].svelte
+++ b/web/pw-server/src/routes/bots/[bot_id].svelte
@@ -1,6 +1,6 @@
<script lang="ts" context="module">
import { get_session_token } from "$lib/auth";
-import { mount_component } from "svelte/internal";
+ import { mount_component } from "svelte/internal";
export async function load({ page }) {
const token = get_session_token();
@@ -30,7 +30,7 @@ import { mount_component } from "svelte/internal";
<script lang="ts">
import dayjs from "dayjs";
-
+
export let bot: object;
export let bundles: object[];
diff --git a/web/pw-server/src/routes/bots/index.svelte b/web/pw-server/src/routes/bots/index.svelte
index 775652b..9186271 100644
--- a/web/pw-server/src/routes/bots/index.svelte
+++ b/web/pw-server/src/routes/bots/index.svelte
@@ -1,71 +1,71 @@
<script lang="ts" context="module">
- import { get_session_token } from '$lib/auth';
+ import { get_session_token } from "$lib/auth";
- /** @type {import('@sveltejs/kit').Load} */
- export async function load({ params, fetch, session, stuff }) {
- const token = get_session_token();
- const res = await fetch('/api/bots/my_bots', {
- headers: {
- 'Content-Type': 'application/json',
- Authorization: `Bearer ${token}`
- }
- });
+ /** @type {import('@sveltejs/kit').Load} */
+ export async function load({ params, fetch, session, stuff }) {
+ const token = get_session_token();
+ const res = await fetch("/api/bots/my_bots", {
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ });
- if (res.ok) {
- return {
- props: {
- bots: await res.json()
- }
- };
- }
+ if (res.ok) {
+ return {
+ props: {
+ bots: await res.json(),
+ },
+ };
+ }
- return {
- status: res.status,
- error: new Error('Could not load bots')
- };
- }
+ return {
+ status: res.status,
+ error: new Error("Could not load bots"),
+ };
+ }
</script>
<script lang="ts">
- import { goto } from '$app/navigation';
+ import { goto } from "$app/navigation";
- export let bots: object[];
- let name: string | undefined;
+ export let bots: object[];
+ let name: string | undefined;
- async function createBot() {
- const token = get_session_token();
- const res = await fetch('/api/bots', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: `Bearer ${token}`
- },
- body: JSON.stringify({
- name: name
- })
- });
+ async function createBot() {
+ const token = get_session_token();
+ const res = await fetch("/api/bots", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify({
+ name: name,
+ }),
+ });
- if (res.ok) {
- let bot = await res.json();
- goto(`/bots/${bot['id']}`);
- } else {
- new Error('creation failed');
- }
- }
+ if (res.ok) {
+ let bot = await res.json();
+ goto(`/bots/${bot["id"]}`);
+ } else {
+ new Error("creation failed");
+ }
+ }
</script>
<form on:submit|preventDefault={createBot}>
- <label for="name">Name</label>
- <input name="name" bind:value={name}/>
- <button type="submit">Create</button>
+ <label for="name">Name</label>
+ <input name="name" bind:value={name} />
+ <button type="submit">Create</button>
</form>
<ul>
- {#each bots as bot}
- <li>
- <a target="_blank" href={`bots/${bot['id']}`}>
- {bot['name']}
- </a>
- </li>
- {/each}
+ {#each bots as bot}
+ <li>
+ <a target="_blank" href={`bots/${bot["id"]}`}>
+ {bot["name"]}
+ </a>
+ </li>
+ {/each}
</ul>
diff --git a/web/pw-server/src/routes/login.svelte b/web/pw-server/src/routes/login.svelte
index 197238e..09b1834 100644
--- a/web/pw-server/src/routes/login.svelte
+++ b/web/pw-server/src/routes/login.svelte
@@ -1,46 +1,46 @@
<script lang="ts">
- import { get_session_token, set_session_token } from '$lib/auth';
- import { goto } from '$app/navigation';
+ import { get_session_token, set_session_token } from "$lib/auth";
+ import { goto } from "$app/navigation";
- let username: string | undefined;
- let password: string | undefined;
+ let username: string | undefined;
+ let password: string | undefined;
- const onSubmit = () => {
- fetch('/api/login', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({
- username,
- password
- })
- })
- .then((response) => {
+ const onSubmit = () => {
+ fetch("/api/login", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ username,
+ password,
+ }),
+ })
+ .then((response) => {
if (!response.ok) {
throw Error(response.statusText);
}
return response.text();
})
- .then((token) => {
- set_session_token(token);
- goto("/")
- });
- };
+ .then((token) => {
+ set_session_token(token);
+ goto("/");
+ });
+ };
function loggedIn(): boolean {
- return get_session_token() != null
+ return get_session_token() != null;
}
</script>
{#if loggedIn()}
- you are logged in
+ you are logged in
{/if}
<form on:submit|preventDefault={onSubmit}>
- <label for="username">Username</label>
- <input name="username" bind:value={username} />
- <label for="password">Password</label>
- <input type="password" name="password" bind:value={password} />
- <button type="submit">Log in</button>
+ <label for="username">Username</label>
+ <input name="username" bind:value={username} />
+ <label for="password">Password</label>
+ <input type="password" name="password" bind:value={password} />
+ <button type="submit">Log in</button>
</form>
diff --git a/web/pw-server/src/routes/register.svelte b/web/pw-server/src/routes/register.svelte
index a21cf65..6344399 100644
--- a/web/pw-server/src/routes/register.svelte
+++ b/web/pw-server/src/routes/register.svelte
@@ -1,38 +1,38 @@
<script lang="ts">
- let username: string | undefined;
- let password: string | undefined;
+ let username: string | undefined;
+ let password: string | undefined;
- const onSubmit = () => {
- if (username === undefined || username.trim() === '') {
- return;
- }
+ const onSubmit = () => {
+ if (username === undefined || username.trim() === "") {
+ return;
+ }
- if (password === undefined || password.trim() === '') {
+ if (password === undefined || password.trim() === "") {
return;
}
- fetch('/api/register', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify({
- username,
- password
- })
- })
- .then((resp) => resp.json())
- .then((data) => {
- console.log(data);
- });
- };
+ fetch("/api/register", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ username,
+ password,
+ }),
+ })
+ .then((resp) => resp.json())
+ .then((data) => {
+ console.log(data);
+ });
+ };
</script>
<h1>Register</h1>
<form on:submit|preventDefault={onSubmit}>
- <label for="username">Username</label>
- <input name="username" bind:value={username} />
- <label for="password">Password</label>
- <input type="password" name="password" bind:value={password} />
- <button type="submit">Register</button>
+ <label for="username">Username</label>
+ <input name="username" bind:value={username} />
+ <label for="password">Password</label>
+ <input type="password" name="password" bind:value={password} />
+ <button type="submit">Register</button>
</form>
diff --git a/web/pw-server/svelte.config.js b/web/pw-server/svelte.config.js
index 14e6a05..0c0c40c 100644
--- a/web/pw-server/svelte.config.js
+++ b/web/pw-server/svelte.config.js
@@ -1,49 +1,46 @@
-import adapter from '@sveltejs/adapter-auto';
-import preprocess from 'svelte-preprocess';
+import adapter from "@sveltejs/adapter-auto";
+import preprocess from "svelte-preprocess";
// import { svelte } from '@sveltejs/vite-plugin-svelte'
-import { viteCommonjs } from '@originjs/vite-plugin-commonjs'
-import wasmPack from 'vite-plugin-wasm-pack';
-
+import { viteCommonjs } from "@originjs/vite-plugin-commonjs";
+import wasmPack from "vite-plugin-wasm-pack";
/** @type {import('@sveltejs/kit').Config} */
const config = {
- // Consult https://github.com/sveltejs/svelte-preprocess
- // for more information about preprocessors
- preprocess: preprocess(),
-
- kit: {
- adapter: adapter(),
+ // Consult https://github.com/sveltejs/svelte-preprocess
+ // for more information about preprocessors
+ preprocess: preprocess(),
- // hydrate the <div id="svelte"> element in src/app.html
- target: '#svelte',
- ssr: false,
- vite: {
- plugins: [
- // svelte(),
- // wasmPack([], ["planetwars-rs"]),
- viteCommonjs({
- transformMixedEsModules: true,
- }),
- ],
- build: {
- commonjsOptions: {
- transformMixedEsModules: true,
- },
- },
- server: {
- proxy: {
- "/api/": "http://localhost:9000",
- "/ws": "ws://localhost:9000/ws",
- },
- fs: {
- // Allow serving files from one level up to the project root
- allow: ['..']
- }
- },
- }
-
- },
+ kit: {
+ adapter: adapter(),
+ // hydrate the <div id="svelte"> element in src/app.html
+ target: "#svelte",
+ ssr: false,
+ vite: {
+ plugins: [
+ // svelte(),
+ // wasmPack([], ["planetwars-rs"]),
+ viteCommonjs({
+ transformMixedEsModules: true,
+ }),
+ ],
+ build: {
+ commonjsOptions: {
+ transformMixedEsModules: true,
+ },
+ },
+ server: {
+ proxy: {
+ "/api/": "http://localhost:9000",
+ "/ws": "ws://localhost:9000/ws",
+ },
+ fs: {
+ // Allow serving files from one level up to the project root
+ allow: [".."],
+ },
+ },
+ },
+ },
};
export default config;
diff --git a/web/pw-server/tsconfig.json b/web/pw-server/tsconfig.json
index 0555d52..b74bddb 100644
--- a/web/pw-server/tsconfig.json
+++ b/web/pw-server/tsconfig.json
@@ -1,31 +1,31 @@
{
- "compilerOptions": {
- "moduleResolution": "node",
- "module": "es2020",
- "lib": ["es2020", "DOM"],
- "target": "es2020",
- /**
+ "compilerOptions": {
+ "moduleResolution": "node",
+ "module": "es2020",
+ "lib": ["es2020", "DOM"],
+ "target": "es2020",
+ /**
svelte-preprocess cannot figure out whether you have a value or a type, so tell TypeScript
to enforce using \`import type\` instead of \`import\` for Types.
*/
- "importsNotUsedAsValues": "error",
- "isolatedModules": true,
- "resolveJsonModule": true,
- /**
+ "importsNotUsedAsValues": "error",
+ "isolatedModules": true,
+ "resolveJsonModule": true,
+ /**
To have warnings/errors of the Svelte compiler at the correct position,
enable source maps by default.
*/
- "sourceMap": true,
- "esModuleInterop": true,
- "skipLibCheck": true,
- "forceConsistentCasingInFileNames": true,
- "baseUrl": ".",
- "allowJs": true,
- "checkJs": true,
- "paths": {
- "$lib": ["src/lib"],
- "$lib/*": ["src/lib/*"]
- }
- },
- "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.ts", "src/**/*.svelte"]
+ "sourceMap": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "baseUrl": ".",
+ "allowJs": true,
+ "checkJs": true,
+ "paths": {
+ "$lib": ["src/lib"],
+ "$lib/*": ["src/lib/*"]
+ }
+ },
+ "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.ts", "src/**/*.svelte"]
}