From b843c5baa7a7574e09747a353a4a8916a65b9428 Mon Sep 17 00:00:00 2001 From: freedumb2000 Date: Sun, 18 Sep 2022 22:39:14 +0200 Subject: [PATCH 1/7] upgrade sveltekit and remove methodOverride --- package.json | 52 ++++++++++++++++++++++++++---------------------- svelte.config.js | 3 +-- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index bdf9ad6..6060b9a 100644 --- a/package.json +++ b/package.json @@ -1,39 +1,43 @@ { - "type": "module", + "name": "tittr", + "version": "0.0.1", + "private": true, "scripts": { "dev": "vite dev", "build": "vite build", - "package": "svelte-kit package", "preview": "vite preview", - "check": "svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --check --plugin-search-dir=. . && eslint .", - "format": "prettier --write --plugin-search-dir=. ." - }, - "prisma": { - "seed": "node --loader ts-node/esm prisma/seed.ts" + "test": "playwright test", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check . && eslint .", + "format": "prettier --write ." }, "devDependencies": { - "@sveltejs/adapter-auto": "1.0.0-next.71", - "@sveltejs/kit": "1.0.0-next.468", - "@types/node": "^18.7.14", - "@typescript-eslint/eslint-plugin": "^5.36.1", - "@typescript-eslint/parser": "^5.36.1", - "eslint": "^8.23.0", - "eslint-config-prettier": "^8.5.0", + "@playwright/test": "^1.25.0", + "@sveltejs/adapter-auto": "1.0.0-next.75", + "@sveltejs/kit": "1.0.0-next.484", + "@types/node": "^18.7.18", + "@typescript-eslint/eslint-plugin": "^5.27.0", + "@typescript-eslint/parser": "^5.27.0", + "eslint": "^8.16.0", + "eslint-config-prettier": "^8.3.0", "eslint-plugin-svelte3": "^4.0.0", - "prettier": "^2.7.1", + "prettier": "^2.6.2", "prettier-plugin-svelte": "^2.7.0", - "prisma": "^4.3.1", - "svelte": "^3.50.0", - "svelte-check": "^2.9.0", - "svelte-preprocess": "^4.10.7", + "svelte": "^3.44.0", + "svelte-check": "^2.7.1", + "svelte-preprocess": "^4.10.6", "ts-node": "^10.9.1", - "tslib": "^2.4.0", - "typescript": "~4.8.2", - "vite": "^3.1.0-beta.1" + "tslib": "^2.3.1", + "typescript": "^4.7.4", + "vite": "^3.1.0", + "prisma": "^4.3.1" }, + "type": "module", "dependencies": { "@prisma/client": "^4.3.1" + }, + "prisma": { + "seed": "node --loader ts-node/esm prisma/seed.ts" } } diff --git a/svelte.config.js b/svelte.config.js index 5038e1f..578b191 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -5,8 +5,7 @@ import preprocess from 'svelte-preprocess' const config = { preprocess: preprocess(), kit: { - adapter: adapter(), - methodOverride: { allowed: ['DELETE'] }, + adapter: adapter() }, } From f696ff343bc9dcd56fdb29321f5582683933420f Mon Sep 17 00:00:00 2001 From: freedumb2000 Date: Sun, 18 Sep 2022 22:45:20 +0200 Subject: [PATCH 2/7] implement actions for create and delete tweet --- src/lib/shared/compose.svelte | 4 ++-- src/lib/shared/tweet.svelte | 2 +- src/routes/home/+page.server.ts | 19 ++++++++++--------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/lib/shared/compose.svelte b/src/lib/shared/compose.svelte index 21e5ff1..756d9c4 100644 --- a/src/lib/shared/compose.svelte +++ b/src/lib/shared/compose.svelte @@ -10,8 +10,8 @@
Avatar
form.reset() }} > diff --git a/src/lib/shared/tweet.svelte b/src/lib/shared/tweet.svelte index f712abd..23653d5 100644 --- a/src/lib/shared/tweet.svelte +++ b/src/lib/shared/tweet.svelte @@ -78,7 +78,7 @@ diff --git a/src/routes/home/+page.server.ts b/src/routes/home/+page.server.ts index d556df3..fe2e857 100644 --- a/src/routes/home/+page.server.ts +++ b/src/routes/home/+page.server.ts @@ -1,5 +1,5 @@ -import { error } from '@sveltejs/kit' -import type { Action, PageServerLoad } from './$types' +import { error, type Actions } from '@sveltejs/kit' +import type { PageServerLoad } from './$types' import { createTweet, @@ -17,11 +17,12 @@ export const load: PageServerLoad = async () => { return { tweets } } -export const POST: Action = async ({ request }) => { - await createTweet(request) -} - -export const DELETE: Action = async ({ request }) => { - await removeTweet(request) - return { location: '/home' } +export const actions: Actions = { + createTweet: async ({ request }) => { + await createTweet(request) + }, + deleteTweet: async ({ request }) => { + await removeTweet(request) + return { location: '/home' } + }, } From 3a3c4d1eac09c627474343a4fa699f025d7ca7a1 Mon Sep 17 00:00:00 2001 From: freedumb2000 Date: Sun, 18 Sep 2022 23:02:29 +0200 Subject: [PATCH 3/7] remove unneeded return statement --- src/routes/home/+page.server.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/home/+page.server.ts b/src/routes/home/+page.server.ts index fe2e857..fc8b307 100644 --- a/src/routes/home/+page.server.ts +++ b/src/routes/home/+page.server.ts @@ -23,6 +23,5 @@ export const actions: Actions = { }, deleteTweet: async ({ request }) => { await removeTweet(request) - return { location: '/home' } }, } From 78b013fd0b33abbd9b9c7883745501a51d445021 Mon Sep 17 00:00:00 2001 From: freedumb2000 Date: Sun, 18 Sep 2022 23:26:37 +0200 Subject: [PATCH 4/7] update likeTweet for Actions --- src/lib/shared/tweet.svelte | 2 +- src/routes/home/+page.server.ts | 4 ++++ src/routes/home/like/+server.ts | 12 ------------ 3 files changed, 5 insertions(+), 13 deletions(-) delete mode 100644 src/routes/home/like/+server.ts diff --git a/src/lib/shared/tweet.svelte b/src/lib/shared/tweet.svelte index 23653d5..819414f 100644 --- a/src/lib/shared/tweet.svelte +++ b/src/lib/shared/tweet.svelte @@ -34,7 +34,7 @@
diff --git a/src/routes/home/+page.server.ts b/src/routes/home/+page.server.ts index fc8b307..e8e2273 100644 --- a/src/routes/home/+page.server.ts +++ b/src/routes/home/+page.server.ts @@ -5,6 +5,7 @@ import { createTweet, getTweets, removeTweet, + likeTweet, } from '$lib/utils/prisma' export const load: PageServerLoad = async () => { @@ -24,4 +25,7 @@ export const actions: Actions = { deleteTweet: async ({ request }) => { await removeTweet(request) }, + likeTweet: async ({ request }) => { + await likeTweet(request) + }, } diff --git a/src/routes/home/like/+server.ts b/src/routes/home/like/+server.ts deleted file mode 100644 index c851fd2..0000000 --- a/src/routes/home/like/+server.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { likeTweet } from '$lib/utils/prisma' -import type { RequestHandler } from './$types' - -export const POST: RequestHandler = async ({ request }) => { - await likeTweet(request) - - return new Response(undefined, { - headers: { - location: '/home', - }, - }) -} From 1da054e7668eefd10849e73112a3b893e0f7110b Mon Sep 17 00:00:00 2001 From: freedumb2000 Date: Mon, 19 Sep 2022 08:55:35 +0200 Subject: [PATCH 5/7] replace custom use:enhanceForm for use:enhance --- src/lib/actions/form.ts | 122 ---------------------------------- src/lib/shared/compose.svelte | 10 ++- src/lib/shared/tweet.svelte | 6 +- 3 files changed, 11 insertions(+), 127 deletions(-) delete mode 100644 src/lib/actions/form.ts diff --git a/src/lib/actions/form.ts b/src/lib/actions/form.ts deleted file mode 100644 index bae6806..0000000 --- a/src/lib/actions/form.ts +++ /dev/null @@ -1,122 +0,0 @@ -/* - From the default SvelteKit example - https://github.com/sveltejs/kit/tree/master/packages/create-svelte/templates/default - - Replaced with SvelteKit's solution for forms - https://github.com/sveltejs/kit/discussions/5875 -*/ - -import { invalidateAll } from '$app/navigation' - -// this action (https://svelte.dev/tutorial/actions) allows us to -// progressively enhance a that already works without JS -/** - * @param {HTMLFormElement} form - * @param {{ - * pending?: ({ data, form }: { data: FormData; form: HTMLFormElement }) => void; - * error?: ({ - * data, - * form, - * response, - * error - * }: { - * data: FormData; - * form: HTMLFormElement; - * response: Response | null; - * error: Error | null; - * }) => void; - * result?: ({ - * data, - * form, - * response - * }: { - * data: FormData; - * response: Response; - * form: HTMLFormElement; - * }) => void; - * }} opts - */ -export function enhanceForm( - form: HTMLFormElement, - { - pending, - error, - result, - }: { - pending?: ({ - data, - form, - }: { - data: FormData - form: HTMLFormElement - }) => void - error?: ({ - data, - form, - response, - error, - }: { - data: FormData - form: HTMLFormElement - response: Response | null - error: Error | null - }) => void - result?: ({ - data, - form, - response, - }: { - data: FormData - response: Response - form: HTMLFormElement - }) => void - } = {} -) { - let current_token: unknown - - /** @param {SubmitEvent} event */ - async function handle_submit(event: SubmitEvent) { - const token = (current_token = {}) - - event.preventDefault() - - const data = new FormData(form) - - if (pending) pending({ data, form }) - - try { - const response = await fetch(form.action, { - method: form.method, - headers: { - accept: 'application/json', - }, - body: data, - }) - - if (token !== current_token) return - - if (response.ok) { - if (result) result({ data, form, response }) - invalidateAll() - } else if (error) { - error({ data, form, error: null, response }) - } else { - console.error(await response.text()) - } - } catch (err: unknown) { - if (error && err instanceof Error) { - error({ data, form, error: err, response: null }) - } else { - throw err - } - } - } - - form.addEventListener('submit', handle_submit) - - return { - destroy() { - form.removeEventListener('submit', handle_submit) - }, - } -} diff --git a/src/lib/shared/compose.svelte b/src/lib/shared/compose.svelte index 756d9c4..61a540f 100644 --- a/src/lib/shared/compose.svelte +++ b/src/lib/shared/compose.svelte @@ -1,5 +1,6 @@