From acef68dc2673be9b7cf9b0dcdd473321ab51ea60 Mon Sep 17 00:00:00 2001 From: Jared Date: Tue, 10 Jun 2025 11:05:23 +0200 Subject: [PATCH 1/9] add typescript support in svelte files, .js to .ts --- package-lock.json | 75 +++++++++++++++++-- package.json | 6 +- src/{hooks.server.js => hooks.server.ts} | 0 src/lib/{auth.js => auth.ts} | 0 src/lib/components/ui/Alert.svelte | 2 +- src/lib/components/ui/Button.svelte | 2 +- src/lib/components/ui/DeleteIconButton.svelte | 2 +- src/lib/components/ui/Modal/Modal.svelte | 2 +- .../components/ui/Modal/ModalContent.svelte | 2 +- src/lib/components/ui/Notification.svelte | 2 +- src/lib/components/ui/Panel.svelte | 2 +- src/lib/components/ui/Select.svelte | 2 +- src/lib/{config.js => config.ts} | 0 ...umberOccupied.js => caseNumberOccupied.ts} | 0 ...{shortenFileSize.js => shortenFileSize.ts} | 0 .../helper/{timeElapsed.js => timeElapsed.ts} | 0 src/lib/{minio.js => minio.ts} | 0 .../{+layout.server.js => +layout.server.ts} | 0 src/routes/(angemeldet)/+layout.svelte | 2 +- src/routes/(angemeldet)/+page.svelte | 2 +- .../list/[vorgang]/{+server.js => +server.ts} | 0 .../[tatort]/{+server.js => +server.ts} | 0 .../{+page.server.js => +page.server.ts} | 0 src/routes/(angemeldet)/tatorte/+page.svelte | 2 +- .../{+page.server.js => +page.server.ts} | 0 src/routes/(angemeldet)/upload/+page.svelte | 2 +- .../view/{+page.server.js => +page.server.ts} | 0 src/routes/(angemeldet)/view/+page.svelte | 2 +- .../{+page.server.js => +page.server.ts} | 0 .../view/[vorgang]/[tatort]/+page.svelte | 2 +- src/routes/+layout.svelte | 2 +- .../{+page.server.js => +page.server.ts} | 0 src/routes/anmeldung/+page.svelte | 2 +- .../[[vorgang]]/{+server.js => +server.ts} | 0 .../api/tatort/{+server.js => +server.ts} | 0 .../api/upload/{+server.js => +server.ts} | 0 tsconfig.json | 4 +- 37 files changed, 93 insertions(+), 24 deletions(-) rename src/{hooks.server.js => hooks.server.ts} (100%) rename src/lib/{auth.js => auth.ts} (100%) rename src/lib/{config.js => config.ts} (100%) rename src/lib/helper/{caseNumberOccupied.js => caseNumberOccupied.ts} (100%) rename src/lib/helper/{shortenFileSize.js => shortenFileSize.ts} (100%) rename src/lib/helper/{timeElapsed.js => timeElapsed.ts} (100%) rename src/lib/{minio.js => minio.ts} (100%) rename src/routes/(angemeldet)/{+layout.server.js => +layout.server.ts} (100%) rename src/routes/(angemeldet)/list/[vorgang]/{+server.js => +server.ts} (100%) rename src/routes/(angemeldet)/list/[vorgang]/[tatort]/{+server.js => +server.ts} (100%) rename src/routes/(angemeldet)/tatorte/{+page.server.js => +page.server.ts} (100%) rename src/routes/(angemeldet)/upload/{+page.server.js => +page.server.ts} (100%) rename src/routes/(angemeldet)/view/{+page.server.js => +page.server.ts} (100%) rename src/routes/(angemeldet)/view/[vorgang]/[tatort]/{+page.server.js => +page.server.ts} (100%) rename src/routes/anmeldung/{+page.server.js => +page.server.ts} (100%) rename src/routes/api/list/[[vorgang]]/{+server.js => +server.ts} (100%) rename src/routes/api/tatort/{+server.js => +server.ts} (100%) rename src/routes/api/upload/{+server.js => +server.ts} (100%) diff --git a/package-lock.json b/package-lock.json index dc9cd61..3e5b8a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/svelte": "^5.2.4", + "@tsconfig/svelte": "^5.0.4", "eslint": "^9.18.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-svelte": "^3.0.0", @@ -35,8 +36,9 @@ "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", "svelte": "^5.0.0", - "svelte-check": "^4.0.0", - "typescript": "^5.0.0", + "svelte-check": "^4.2.1", + "svelte-preprocess": "^6.0.3", + "typescript": "^5.8.3", "typescript-eslint": "^8.20.0", "vite": "^6.2.5", "vitest": "^3.0.0" @@ -1633,6 +1635,13 @@ } } }, + "node_modules/@tsconfig/svelte": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-5.0.4.tgz", + "integrity": "sha512-BV9NplVgLmSi4mwKzD8BD/NQ8erOY/nUE/GpgWe2ckx+wIQF5RyRirn/QsSSCPeulVpc3RA/iJt6DpfTIZps0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -5672,9 +5681,9 @@ } }, "node_modules/svelte-check": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.5.tgz", - "integrity": "sha512-Gb0T2IqBNe1tLB9EB1Qh+LOe+JB8wt2/rNBDGvkxQVvk8vNeAoG+vZgFB/3P5+zC7RWlyBlzm9dVjZFph/maIg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.2.1.tgz", + "integrity": "sha512-e49SU1RStvQhoipkQ/aonDhHnG3qxHSBtNfBRb9pxVXoa+N7qybAo32KgA9wEb2PCYFNaDg7bZCdhLD1vHpdYA==", "dev": true, "license": "MIT", "dependencies": { @@ -5734,6 +5743,62 @@ } } }, + "node_modules/svelte-preprocess": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", + "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": ">=3", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": ">=0.55", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, "node_modules/svelte/node_modules/is-reference": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", diff --git a/package.json b/package.json index a2f7e26..0c38498 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@sveltejs/vite-plugin-svelte": "^5.0.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/svelte": "^5.2.4", + "@tsconfig/svelte": "^5.0.4", "eslint": "^9.18.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-svelte": "^3.0.0", @@ -33,8 +34,9 @@ "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", "svelte": "^5.0.0", - "svelte-check": "^4.0.0", - "typescript": "^5.0.0", + "svelte-check": "^4.2.1", + "svelte-preprocess": "^6.0.3", + "typescript": "^5.8.3", "typescript-eslint": "^8.20.0", "vite": "^6.2.5", "vitest": "^3.0.0" diff --git a/src/hooks.server.js b/src/hooks.server.ts similarity index 100% rename from src/hooks.server.js rename to src/hooks.server.ts diff --git a/src/lib/auth.js b/src/lib/auth.ts similarity index 100% rename from src/lib/auth.js rename to src/lib/auth.ts diff --git a/src/lib/components/ui/Alert.svelte b/src/lib/components/ui/Alert.svelte index d461847..67d8238 100644 --- a/src/lib/components/ui/Alert.svelte +++ b/src/lib/components/ui/Alert.svelte @@ -46,7 +46,7 @@ } - diff --git a/src/routes/anmeldung/+page.server.js b/src/routes/anmeldung/+page.server.ts similarity index 100% rename from src/routes/anmeldung/+page.server.js rename to src/routes/anmeldung/+page.server.ts diff --git a/src/routes/anmeldung/+page.svelte b/src/routes/anmeldung/+page.svelte index d953f3b..3823376 100644 --- a/src/routes/anmeldung/+page.svelte +++ b/src/routes/anmeldung/+page.svelte @@ -1,4 +1,4 @@ - diff --git a/src/routes/(angemeldet)/+page.svelte b/src/routes/(angemeldet)/+page.svelte index 6148a0b..b0c9d8b 100644 --- a/src/routes/(angemeldet)/+page.svelte +++ b/src/routes/(angemeldet)/+page.svelte @@ -2,7 +2,6 @@ diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index 3f56b0b..e742613 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -6,7 +6,6 @@ @@ -97,14 +89,19 @@ {item.name} + style="padding: 2px" + id="del__{item.name}" + on:click|preventDefault={delete_item} + aria-label="Vorgang {item.name} löschen" + > + + + + diff --git a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte index 5b532bf..0ba8e6a 100644 --- a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte +++ b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte @@ -1,9 +1,3 @@ - -
@@ -190,93 +185,99 @@
{ - defocus_element(i); - }} - on:keydown|stopPropagation={ - // event needed to identify ID - // TO-DO: check if event is needed or if index is sufficient - async (ev) => {handle_input(ev, i)} - } - - >{item.name} + style="display: inline-block; min-width: 5px;" + id="label__{item.name}" + class="text-sm font-semibold leading-6 text-gray-900" + contenteditable={!item.show_button} + role="textbox" + tabindex="0" + aria-label="Dateiname bearbeiten" + on:focusout={() => { + defocus_element(i); + }} + on:keydown|stopPropagation={// event needed to identify ID + // TO-DO: check if event is needed or if index is sufficient + async (ev) => { + handle_input(ev, i); + }}>{item.name} {#if item.show_button} - + {/if} + style="padding: 2px" + id="del__{item.name}" + on:click|preventDefault={async (ev) => { + let delete_item = window.confirm('Bist du sicher?'); + + if (delete_item) { + // bucket: tatort, name: /item-name + let vorgang = $page.params.vorgang; + let filename = ''; + if (ev && ev.currentTarget && (ev.currentTarget as HTMLElement).id) { + filename = (ev.currentTarget as HTMLElement).id.split('del__')[1]; + } + + // delete request + // -------------- + + let url = new URL($page.url); + url.pathname += `/${filename}`; + + console.log(`--- ${vorgang} + ${filename} + ${url}`); + try { + const response = await fetch(url, { method: 'DELETE' }); + if (response.status == 204) { + setTimeout(() => { + window.location.reload(); + }, 500); + } + } catch (error) { + if (error instanceof Error) { + console.log(error.message); + } else { + console.log(error); + } + } + } + }} + aria-label="Datei löschen" + > + +

{shortenFileSize(item.size)}

@@ -296,7 +297,7 @@
-Umbenennen {#if inProgress}

Vorgang läuft...

@@ -307,5 +308,10 @@
-
+ + diff --git a/src/routes/(angemeldet)/list/[vorgang]/+server.ts b/src/routes/(angemeldet)/list/[vorgang]/+server.ts index d090407..d62c632 100644 --- a/src/routes/(angemeldet)/list/[vorgang]/+server.ts +++ b/src/routes/(angemeldet)/list/[vorgang]/+server.ts @@ -3,25 +3,25 @@ import { json } from '@sveltejs/kit'; // rename operation -export async function PUT({ request }) { +export async function PUT({ request }: {request: Request}) { const data = await request.json(); console.log(`--- ${request.url.split('/').at(-1)} +++ ${JSON.stringify(data)}`); // Vorgang - let vorgang = request.url.split('/').at(-1) + const vorgang = request.url.split('/').at(-1); // prepare copy, incl. check if new name exists already - let old_name = data["old_name"] - let src_full_path = `/tatort/${vorgang}/${old_name}` - let new_name = `${vorgang}/${data["new_name"]}` + const old_name = data["old_name"]; + const src_full_path = `/tatort/${vorgang}/${old_name}`; + const new_name = `${vorgang}/${data["new_name"]}`; try { - let file_stats = await client.statObject('tatort', new_name) - return json({ msg: 'Die Datei existiert bereits.' }, { status: 400 }) + await client.statObject('tatort', new_name); + return json({ msg: 'Die Datei existiert bereits.' }, { status: 400 }); } catch (error) { // continue operation - console.log('continue operation') + console.log(error, 'continue operation'); } // actual copy operation diff --git a/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.ts b/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.ts index 03a0989..9861268 100644 --- a/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.ts +++ b/src/routes/(angemeldet)/list/[vorgang]/[tatort]/+server.ts @@ -1,12 +1,11 @@ import { client } from '$lib/minio'; -export async function DELETE({ request }) { +export async function DELETE({ request }: { request: Request }) { + const url_fragments = request.url.split('/'); + const item = url_fragments.at(-1); + const vorgang = url_fragments.at(-2); - let url_fragments = request.url.split('/') - let item = url_fragments.at(-1); - let vorgang = url_fragments.at(-2); + await client.removeObject('tatort', `${vorgang}/${item}`); - await client.removeObject('tatort', `${vorgang}/${item}`) - - return new Response(null, { status: 204 }); -}; + return new Response(null, { status: 204 }); +} diff --git a/src/routes/(angemeldet)/tatorte/+page.server.ts b/src/routes/(angemeldet)/tatorte/+page.server.ts index 48f197d..5004d69 100644 --- a/src/routes/(angemeldet)/tatorte/+page.server.ts +++ b/src/routes/(angemeldet)/tatorte/+page.server.ts @@ -5,7 +5,7 @@ import caseNumberOccupied from '$lib/helper/caseNumberOccupied'; /** @type {import('./$types').Actions} */ export const actions = { - default: async ({ request }) => { + default: async ({ request }: {request: Request}) => { const data = await request.formData(); const caseNumber = data.get('caseNumber'); const description = data.get('description'); @@ -28,7 +28,7 @@ export const actions = { const config = `${JSON.stringify({ caseNumber, description, version: 1 })}\n`; - await client.putObject('tatort', `${caseNumber}/config.json`, config, { + await client.putObject('tatort', `${caseNumber}/config.json`, config, undefined, { 'Content-Type': 'application/json' }); diff --git a/src/routes/(angemeldet)/upload/+page.server.ts b/src/routes/(angemeldet)/upload/+page.server.ts index aecc9b6..ceb3ecb 100644 --- a/src/routes/(angemeldet)/upload/+page.server.ts +++ b/src/routes/(angemeldet)/upload/+page.server.ts @@ -2,7 +2,7 @@ import { Readable } from 'stream'; import { client } from '$lib/minio'; import { fail } from '@sveltejs/kit'; -function isRequiredFieldValid(value) { +const isRequiredFieldValid = (value: unknown) => { if (value == null) return false; if (typeof value === 'string' || value instanceof String) return value.trim() !== ''; @@ -12,7 +12,7 @@ function isRequiredFieldValid(value) { /** @type {import('./$types').Actions} */ export const actions = { - url: async ({ request }) => { + url: async ({ request }: {request: Request}) => { const data = await request.formData(); const vorgang = data.get('vorgang'); const name = data.get('name'); @@ -25,20 +25,20 @@ export const actions = { if (!objectName.endsWith('.png')) objectName += '.png'; break; case '': - if (fileName.endsWith('.glb') && !objectName.endsWith('.glb')) objectName += '.glb'; + if (fileName?.toString().endsWith('.glb') && !objectName.endsWith('.glb')) objectName += '.glb'; } const url = await client.presignedPutObject('tatort', objectName); return { url }; }, - validate: async ({ request }) => { + validate: async ({ request }: {request: Request}) => { const requestData = await request.formData(); const data = Object.fromEntries(requestData); const vorgang = data.vorgang; const name = data.name; let success = true; - let err = {}; + const err = {}; if (isRequiredFieldValid(vorgang)) err.vorgang = null; else { @@ -57,7 +57,7 @@ export const actions = { return fail(400, err); }, - upload: async ({ request }) => { + upload: async ({ request }: {request: Request}) => { const requestData = await request.formData(); const data = Object.fromEntries(requestData); const vorgang = data.vorgang; @@ -69,7 +69,7 @@ export const actions = { console.log('O:', url); return { url }; }, - upload3: async ({ request }) => { + upload3: async ({ request }: {request: Request}) => { const requestData = await request.formData(); const data = Object.fromEntries(requestData); const name = data.name; diff --git a/src/routes/(angemeldet)/upload/+page.svelte b/src/routes/(angemeldet)/upload/+page.svelte index 9e08cc1..1475803 100644 --- a/src/routes/(angemeldet)/upload/+page.svelte +++ b/src/routes/(angemeldet)/upload/+page.svelte @@ -15,10 +15,8 @@ let inProgress = false; let vorgang = ''; let name = ''; - /** @type {?string}*/ - let etag = null; - /** @type {?FileList} */ - let files = null; + let etag: string | null = null; + let files: FileList | null = null; $: inProgress = form === null; @@ -71,8 +69,7 @@ return null; } - /** @param {MouseEvent} event*/ - async function buttonClick(event) { + async function buttonClick(event: MouseEvent) { if (!(await validateForm())) { event.preventDefault(); return; diff --git a/src/routes/(angemeldet)/view/+page.server.ts b/src/routes/(angemeldet)/view/+page.server.ts index 337f6e4..8a6f20d 100644 --- a/src/routes/(angemeldet)/view/+page.server.ts +++ b/src/routes/(angemeldet)/view/+page.server.ts @@ -3,7 +3,7 @@ import { fail, redirect } from '@sveltejs/kit'; /** @type {import('./$types').Actions} */ export const actions = { - default: async ({ request }) => { + default: async ({ request }: {request: Request}) => { const data = await request.formData(); const caseNumber = data.get('caseNumber'); @@ -15,7 +15,7 @@ export const actions = { }); } - if (!(await caseNumberOccupied(caseNumber))) { + if (typeof caseNumber === 'string' && !(await caseNumberOccupied(caseNumber))) { return fail(400, { success: false, caseNumber, diff --git a/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.server.ts b/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.server.ts index 131154f..0d616c4 100644 --- a/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.server.ts +++ b/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.server.ts @@ -1,7 +1,8 @@ import { client } from '$lib/minio'; +import type { PageServerLoad } from './$types'; /** @type {import('./$types').PageServerLoad} */ -export async function load({ params }) { +export const load: PageServerLoad = async ({ params }) => { const { vorgang, tatort } = params; const url = await client.presignedUrl('GET', 'tatort', `${vorgang}/${tatort}`); return { url }; diff --git a/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.svelte b/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.svelte index 1551de8..dc2d254 100644 --- a/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.svelte +++ b/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.svelte @@ -19,18 +19,11 @@ let cameraAzimuth = 0; let cameraPolar = 0; - let frontView = cameraAzimuth === 0 && cameraPolar === 0 ? true : false; - - let topView = cameraAzimuth === 0 && cameraPolar === 90 ? true : false; - let cameraZoom = 100; let xRotation = 0; let yRotation = 0; let zRotation = 0; - /** - * @type {any} - */ let modelViewer; $: style = `width: ${progress}%`; @@ -38,7 +31,7 @@ /** * @param {any} detail */ - function onProgress({ detail }) { + const onProgress = ({ detail }) => { progress = Math.ceil(detail.totalProgress * 100.0); if (progress == 100) { setTimeout(() => { diff --git a/src/routes/anmeldung/+page.server.ts b/src/routes/anmeldung/+page.server.ts index feb85c2..52a9248 100644 --- a/src/routes/anmeldung/+page.server.ts +++ b/src/routes/anmeldung/+page.server.ts @@ -1,12 +1,13 @@ import { dev } from '$app/environment'; -import { fail, redirect } from '@sveltejs/kit'; +import { fail, redirect, type Cookies } from '@sveltejs/kit'; import { authenticate } from '$lib/auth'; +import type { RequestEvent } from '../(angemeldet)/$types'; const COOKIE_NAME = 'session'; /** @type {import('./$types').Actions} */ export const actions = { - login: async ({ request, cookies }) => { + login: async ({ request, cookies }: {request: Request, cookies: Cookies}) => { const data = await request.formData(); const user = data.get('user'); const password = data.get('password'); @@ -23,7 +24,7 @@ export const actions = { }); throw redirect(303, '/'); }, - logout: async (event) => { + logout: async (event: RequestEvent) => { event.cookies.delete(COOKIE_NAME, {path: '/'}); event.locals.user = null; return { success: true }; diff --git a/src/routes/api/list/[[vorgang]]/+server.ts b/src/routes/api/list/[[vorgang]]/+server.ts index c1729fa..89ce787 100644 --- a/src/routes/api/list/[[vorgang]]/+server.ts +++ b/src/routes/api/list/[[vorgang]]/+server.ts @@ -3,7 +3,7 @@ import { client } from '$lib/minio'; /** @type {import('./$types').RequestHandler} */ export async function GET({ params }) { const prefix = params.vorgang ? `${params.vorgang}/` : ''; - let stream = client.listObjectsV2('tatort', prefix, false, ''); + const stream = client.listObjectsV2('tatort', prefix, false, ''); const result = new ReadableStream({ start(controller) { stream.on('data', (data) => { diff --git a/src/routes/api/tatort/+server.ts b/src/routes/api/tatort/+server.ts index dbc89c7..1aac3b2 100644 --- a/src/routes/api/tatort/+server.ts +++ b/src/routes/api/tatort/+server.ts @@ -1,8 +1,7 @@ import { client } from '$lib/minio'; -/** @type {import('./$types').RequestHandler} */ export async function GET() { - var stream = client.listObjectsV2('tatort', '', true); + const stream = client.listObjectsV2('tatort', '', true); const result = new ReadableStream({ start(controller) { stream.on('data', (data) => { diff --git a/src/routes/api/upload/+server.ts b/src/routes/api/upload/+server.ts index d008865..1c1ae66 100644 --- a/src/routes/api/upload/+server.ts +++ b/src/routes/api/upload/+server.ts @@ -1,5 +1,5 @@ +import type { RequestHandler } from "@sveltejs/kit"; -/** @type {import('./$types').RequestHandler} */ -export async function GET(params) { +export async function GET(params: RequestHandler) { console.log('GET', params); } From e4d74e4331ae0af9243eea81ecfed4549152ad55 Mon Sep 17 00:00:00 2001 From: Jared Date: Tue, 10 Jun 2025 14:10:48 +0200 Subject: [PATCH 7/9] deleted unnecessary console.log statements --- src/routes/(angemeldet)/list/+page.svelte | 1 - src/routes/(angemeldet)/list/[vorgang]/+page.svelte | 1 - 2 files changed, 2 deletions(-) diff --git a/src/routes/(angemeldet)/list/+page.svelte b/src/routes/(angemeldet)/list/+page.svelte index c51a113..90e15ac 100644 --- a/src/routes/(angemeldet)/list/+page.svelte +++ b/src/routes/(angemeldet)/list/+page.svelte @@ -24,7 +24,6 @@ .filter((i) => i.length > 0) .map((i) => JSON.parse(i)); - console.log(objs); list = list.concat(objs); } }); diff --git a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte index 0ba8e6a..4a5ab8e 100644 --- a/src/routes/(angemeldet)/list/[vorgang]/+page.svelte +++ b/src/routes/(angemeldet)/list/[vorgang]/+page.svelte @@ -52,7 +52,6 @@ .filter((i) => i.length > 0) .map((i) => JSON.parse(i)); - console.log(objs); list = list.concat(objs); list = list.map((item) => { From 07247486ab9804a6c4b7cb0f4c25fe1b04a24274 Mon Sep 17 00:00:00 2001 From: Jared Date: Tue, 10 Jun 2025 14:33:40 +0200 Subject: [PATCH 8/9] fix further type problems --- src/lib/auth.ts | 2 +- src/lib/config.ts | 2 +- src/lib/helper/caseNumberOccupied.ts | 9 ++----- src/lib/helper/shortenFileSize.ts | 7 +----- src/lib/helper/timeElapsed.ts | 7 +----- src/routes/(angemeldet)/tatorte/+page.svelte | 8 +++--- .../(angemeldet)/upload/+page.server.ts | 5 ---- src/routes/(angemeldet)/upload/+page.svelte | 7 +----- .../view/[vorgang]/[tatort]/+page.svelte | 25 +------------------ src/routes/anmeldung/+page.svelte | 6 ++--- 10 files changed, 15 insertions(+), 63 deletions(-) diff --git a/src/lib/auth.ts b/src/lib/auth.ts index 19d290a..958bc6e 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -11,7 +11,7 @@ export function createToken(userData) { return jwt.sign(userData, SECRET, { expiresIn: EXPIRES_IN }); } -export function decryptToken(token) { +export function decryptToken(token: string) { return jwt.verify(token, SECRET); } diff --git a/src/lib/config.ts b/src/lib/config.ts index 5c34af3..0775514 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -1,3 +1,3 @@ import { readFileSync } from 'fs'; -export default JSON.parse(readFileSync('./config.json')); +export default JSON.parse(readFileSync('./config.json').toString()); diff --git a/src/lib/helper/caseNumberOccupied.ts b/src/lib/helper/caseNumberOccupied.ts index 6fdd4bc..0d95f73 100644 --- a/src/lib/helper/caseNumberOccupied.ts +++ b/src/lib/helper/caseNumberOccupied.ts @@ -1,13 +1,8 @@ import { client } from '$lib/minio'; -/** - * Check if caseNumber is used - * @param {string} caseNumber - * @returns {Promise { const prefix = `${caseNumber}/config.json`; - const promise = new Promise((resolve) => { + const promise: Promise = new Promise((resolve) => { const stream = client.listObjectsV2('tatort', prefix, false, ''); stream.on('data', () => { stream.destroy(); diff --git a/src/lib/helper/shortenFileSize.ts b/src/lib/helper/shortenFileSize.ts index 9628b34..0785886 100644 --- a/src/lib/helper/shortenFileSize.ts +++ b/src/lib/helper/shortenFileSize.ts @@ -2,12 +2,7 @@ const KILO = 1024; const MEGA = KILO * KILO; const GIGA = MEGA * KILO; -/** - * Shortens the size in bytes - * @param {number} size - * @returns{string} - */ -export default function shortenFileSize(size: number) { +export default function shortenFileSize(size: number): string { const giga = Math.floor(size / GIGA); let remainder = size % GIGA; const mega = Math.floor(remainder / MEGA); diff --git a/src/lib/helper/timeElapsed.ts b/src/lib/helper/timeElapsed.ts index f9186d9..2628ea7 100644 --- a/src/lib/helper/timeElapsed.ts +++ b/src/lib/helper/timeElapsed.ts @@ -4,12 +4,7 @@ const DAY = 24 * HOUR; const YEAR = 365 * DAY; const MONTH = YEAR / 12; -/** - * get readable string of time elapsed since date - * @param {Date} date - * @returns string - */ -export default function timeElapsed(date: Date) { +export default function timeElapsed(date: Date): string { const now = new Date(); const age = Math.floor((now.getTime() - date.getTime()) / 1000); diff --git a/src/routes/(angemeldet)/tatorte/+page.svelte b/src/routes/(angemeldet)/tatorte/+page.svelte index 2920917..0564923 100644 --- a/src/routes/(angemeldet)/tatorte/+page.svelte +++ b/src/routes/(angemeldet)/tatorte/+page.svelte @@ -55,22 +55,22 @@
- {#if form?.error?.description} -

{form.error.description}

+ {#if form?.error} +

{form.description}

{/if}
diff --git a/src/routes/(angemeldet)/upload/+page.server.ts b/src/routes/(angemeldet)/upload/+page.server.ts index ceb3ecb..27cc6c9 100644 --- a/src/routes/(angemeldet)/upload/+page.server.ts +++ b/src/routes/(angemeldet)/upload/+page.server.ts @@ -10,7 +10,6 @@ const isRequiredFieldValid = (value: unknown) => { return true; } -/** @type {import('./$types').Actions} */ export const actions = { url: async ({ request }: {request: Request}) => { const data = await request.formData(); @@ -62,11 +61,9 @@ export const actions = { const data = Object.fromEntries(requestData); const vorgang = data.vorgang; const name = data.name; - console.log('I:', vorgang, name); const url = await client.presignedPutObject('tatort', `${vorgang}/${name}`, 60); - console.log('O:', url); return { url }; }, upload3: async ({ request }: {request: Request}) => { @@ -74,7 +71,6 @@ export const actions = { const data = Object.fromEntries(requestData); const name = data.name; const stream = data.file.stream(); - console.log('Data:', stream); const metaData = { 'Content-Type': 'model-gtlf-binary', 'X-VorgangsNr': '4711' }; const result = new Promise((resolve, reject) => { client.putObject('tatort', name, Readable.from(stream), metaData, function (err, etag) { @@ -86,7 +82,6 @@ export const actions = { let error = null; try { etag = await result; - console.log(etag); } catch (err) { error = err; console.log('Error:', err); diff --git a/src/routes/(angemeldet)/upload/+page.svelte b/src/routes/(angemeldet)/upload/+page.svelte index 1475803..5f7b5c2 100644 --- a/src/routes/(angemeldet)/upload/+page.svelte +++ b/src/routes/(angemeldet)/upload/+page.svelte @@ -20,8 +20,7 @@ $: inProgress = form === null; - /** @type {?Record}*/ - let formErrors; + let formErrors: Record | null; async function validateForm() { let data = new FormData(); @@ -39,7 +38,6 @@ success = false; } - console.log('File', files); if (!files?.length) { formErrors = { file: 'Sie haben keine Datei ausgewählt.', ...formErrors }; success = false; @@ -75,7 +73,6 @@ return; } const url = await getUrl(); - console.log('URL', url); open = true; inProgress = true; @@ -83,7 +80,6 @@ .then((response) => { inProgress = false; etag = '123'; - console.log('SUCCESS', response); }) .catch((err) => { inProgress = false; @@ -93,7 +89,6 @@ } function uploadSuccessful() { - console.log('reset'); open = false; vorgang = ''; name = ''; diff --git a/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.svelte b/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.svelte index dc2d254..d95184e 100644 --- a/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.svelte +++ b/src/routes/(angemeldet)/view/[vorgang]/[tatort]/+page.svelte @@ -28,9 +28,6 @@ $: style = `width: ${progress}%`; - /** - * @param {any} detail - */ const onProgress = ({ detail }) => { progress = Math.ceil(detail.totalProgress * 100.0); if (progress == 100) { @@ -41,21 +38,6 @@ } function onResetView() { - console.log( - 'show cameraOrbit:', - modelViewer.getCameraOrbit(), - modelViewer.cameraOrbit, - modelViewer.getDimensions() - ); - console.log( - 'Camera-orbit: ', - modelViewer.getAttribute('camera-orbit'), - 'camera-target: ', - modelViewer.getAttribute('camera-target'), - 'object-rotation: ', - modelViewer.getAttribute('rotation') - ); - cameraAzimuth = 0; cameraPolar = 0; cameraZoom = 100; @@ -69,12 +51,7 @@ fieldOfView = '10deg'; } - /** - * @param {number} azimuth - * @param {number} polar - * @param {number} zoom - */ - function updateCameraOrbit(azimuth, polar, zoom) { + function updateCameraOrbit(azimuth: number, polar: number, zoom: number) { cameraAzimuth = azimuth; cameraPolar = polar; cameraZoom = zoom; diff --git a/src/routes/anmeldung/+page.svelte b/src/routes/anmeldung/+page.svelte index 43e4d86..be512ee 100644 --- a/src/routes/anmeldung/+page.svelte +++ b/src/routes/anmeldung/+page.svelte @@ -1,10 +1,10 @@