From a4c5f122e5ba55874cadf4feb1beaea5fc502ce1 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Tue, 19 Nov 2024 12:38:28 +0100 Subject: [PATCH 1/4] svelte 5 auto-migration --- client/package.json | 2 +- client/src/App.svelte | 6 +++--- client/src/List.svelte | 20 ++++++++++---------- client/src/Question.svelte | 20 ++++++++++---------- client/src/main.js | 3 ++- 5 files changed, 26 insertions(+), 25 deletions(-) diff --git a/client/package.json b/client/package.json index ff4e04b..63a6284 100644 --- a/client/package.json +++ b/client/package.json @@ -11,7 +11,7 @@ "format": "prettier --plugin=prettier-plugin-svelte --plugin=prettier-plugin-tailwindcss --write ." }, "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.1.2", + "@sveltejs/vite-plugin-svelte": "^4.0.0", "autoprefixer": "^10.4.20", "eslint": "^9.15.0", "eslint-config-prettier": "^9.1.0", diff --git a/client/src/App.svelte b/client/src/App.svelte index 76b3d2f..db1f6aa 100644 --- a/client/src/App.svelte +++ b/client/src/App.svelte @@ -3,7 +3,7 @@ import { event } from "./store"; import List from "./List.svelte"; - let problum; + let problum = $state(); async function popstate() { const path = window.location.pathname; @@ -60,7 +60,7 @@ onMount(popstate); - + {#if problum}
@@ -93,7 +93,7 @@
Open new Q&A session
{/if} diff --git a/client/src/List.svelte b/client/src/List.svelte index c56cfd4..d1c10d6 100644 --- a/client/src/List.svelte +++ b/client/src/List.svelte @@ -82,8 +82,8 @@ return await r.json(); } - let problum; - let rawQuestions; + let problum = $state(); + let rawQuestions = $state(); event.subscribe((e) => { loadQuestions(e) .then((qs) => { @@ -203,12 +203,12 @@ return qs; } - $: questions = adjustQuestions(rawQuestions, $localAdjustments, $votedFor); - $: unanswered = (questions || []).filter((q) => !q.answered && !q.hidden); - $: answered = (questions || []) + let questions = $derived(adjustQuestions(rawQuestions, $localAdjustments, $votedFor)); + let unanswered = $derived((questions || []).filter((q) => !q.answered && !q.hidden)); + let answered = $derived((questions || []) .filter((q) => q.answered && !q.hidden) - .sort((a, b) => a.answered - b.answered); - $: hidden = (questions || []).filter((q) => q.hidden); + .sort((a, b) => a.answered - b.answered)); + let hidden = $derived((questions || []).filter((q) => q.hidden)); async function ask() { let q; @@ -267,14 +267,14 @@ } - + {#if questions}
{#if $event.secret} {share_text}
The URL in your address bar shares the host view.
@@ -284,7 +284,7 @@ {:else} Ask another question {/if}
diff --git a/client/src/Question.svelte b/client/src/Question.svelte index 6ee7921..f519cb7 100644 --- a/client/src/Question.svelte +++ b/client/src/Question.svelte @@ -2,9 +2,9 @@ import { onMount } from "svelte"; import { votedFor, questionCache, questionData, localAdjustments, event } from "./store.js"; - export let question; + let { question } = $props(); - let now = new Date(); + let now = $state(new Date()); onMount(() => { const interval = setInterval(() => { now = new Date(); @@ -15,8 +15,8 @@ }; }); - $: liked = question.qid in $votedFor; - $: q = questionData(question.qid, $questionCache); + let liked = $derived(question.qid in $votedFor); + let q = $derived(questionData(question.qid, $questionCache)); async function vote() { let dir; @@ -110,9 +110,9 @@
{#if liked} - + {:else} - + {/if}
{question.votes}
@@ -129,15 +129,15 @@ {#if $event.secret} — {#if question.answered} - + {:else} - + {/if} | {#if question.hidden} - + {:else} - + {/if} {/if}
diff --git a/client/src/main.js b/client/src/main.js index d91083c..b6e421d 100644 --- a/client/src/main.js +++ b/client/src/main.js @@ -1,6 +1,7 @@ import App from "./App.svelte"; +import { mount } from "svelte"; -const app = new App({ +const app = mount(App, { target: document.getElementById("app") }); From e14cd68524b2906825a0fd527cd34e9e819d870c Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Tue, 19 Nov 2024 12:46:27 +0100 Subject: [PATCH 2/4] npm upgrade -S --- client/package-lock.json | 69 +++++++++++++++++++--------------------- client/package.json | 2 +- 2 files changed, 34 insertions(+), 37 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index c4ff98a..5307133 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,7 +8,7 @@ "name": "client", "version": "0.0.0", "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.1.2", + "@sveltejs/vite-plugin-svelte": "^4.0.1", "autoprefixer": "^10.4.20", "eslint": "^9.15.0", "eslint-config-prettier": "^9.1.0", @@ -1003,58 +1003,45 @@ ] }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", - "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.1.tgz", + "integrity": "sha512-prXoAE/GleD2C4pKgHa9vkdjpzdYwCSw/kmjw6adIyu0vk5YKCfqIztkLg10m+kOYnzZu3bb0NaPTxlWre2a9Q==", "dev": true, "license": "MIT", "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", - "debug": "^4.3.4", + "@sveltejs/vite-plugin-svelte-inspector": "^3.0.0-next.0||^3.0.0", + "debug": "^4.3.7", "deepmerge": "^4.3.1", "kleur": "^4.1.5", - "magic-string": "^0.30.10", - "svelte-hmr": "^0.16.0", - "vitefu": "^0.2.5" + "magic-string": "^0.30.12", + "vitefu": "^1.0.3" }, "engines": { - "node": "^18.0.0 || >=20" + "node": "^18.0.0 || ^20.0.0 || >=22" }, "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.0", + "svelte": "^5.0.0-next.96 || ^5.0.0", "vite": "^5.0.0" } }, "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", - "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-3.0.1.tgz", + "integrity": "sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" + "debug": "^4.3.7" }, "engines": { - "node": "^18.0.0 || >=20" + "node": "^18.0.0 || ^20.0.0 || >=22" }, "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.0", + "@sveltejs/vite-plugin-svelte": "^4.0.0-next.0||^4.0.0", + "svelte": "^5.0.0-next.96 || ^5.0.0", "vite": "^5.0.0" } }, - "node_modules/@sveltejs/vite-plugin-svelte/node_modules/svelte-hmr": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", - "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", - "dev": true, - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.19.0 || ^4.0.0" - } - }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -1097,6 +1084,7 @@ "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": ">=8.9.0" } @@ -1768,7 +1756,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.1.4.tgz", "integrity": "sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/espree": { "version": "10.3.0", @@ -1806,6 +1795,7 @@ "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz", "integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "@types/estree": "^1.0.1" @@ -2235,6 +2225,7 @@ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.6" } @@ -3393,6 +3384,7 @@ "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.2.3.tgz", "integrity": "sha512-DRrWXdzo6+gfX9H/hQofQYyAtsGqC99+CFBvttImGt6gAy4Xzh0hHBrCHw5OtBgaPOdVGNW+S+mDcYcEsvTPOw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@jridgewell/sourcemap-codec": "^1.5.0", @@ -3753,13 +3745,17 @@ } }, "node_modules/vitefu": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", - "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.3.tgz", + "integrity": "sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==", "dev": true, "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*" + ], "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0" }, "peerDependenciesMeta": { "vite": { @@ -3915,7 +3911,8 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", - "dev": true + "dev": true, + "license": "MIT" } } } diff --git a/client/package.json b/client/package.json index 63a6284..b3a9b3d 100644 --- a/client/package.json +++ b/client/package.json @@ -11,7 +11,7 @@ "format": "prettier --plugin=prettier-plugin-svelte --plugin=prettier-plugin-tailwindcss --write ." }, "devDependencies": { - "@sveltejs/vite-plugin-svelte": "^4.0.0", + "@sveltejs/vite-plugin-svelte": "^4.0.1", "autoprefixer": "^10.4.20", "eslint": "^9.15.0", "eslint-config-prettier": "^9.1.0", From fc91023b586d9a05045c2d03014e0a8a8e4cb23a Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Tue, 19 Nov 2024 12:47:54 +0100 Subject: [PATCH 3/4] prettier --write --- client/src/List.svelte | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/List.svelte b/client/src/List.svelte index d1c10d6..bc1236d 100644 --- a/client/src/List.svelte +++ b/client/src/List.svelte @@ -205,9 +205,9 @@ let questions = $derived(adjustQuestions(rawQuestions, $localAdjustments, $votedFor)); let unanswered = $derived((questions || []).filter((q) => !q.answered && !q.hidden)); - let answered = $derived((questions || []) - .filter((q) => q.answered && !q.hidden) - .sort((a, b) => a.answered - b.answered)); + let answered = $derived( + (questions || []).filter((q) => q.answered && !q.hidden).sort((a, b) => a.answered - b.answered) + ); let hidden = $derived((questions || []).filter((q) => q.hidden)); async function ask() { From 5ecfbf96b9ce30a077867f0b63b4189dba2f4306 Mon Sep 17 00:00:00 2001 From: Jon Gjengset Date: Tue, 19 Nov 2024 12:59:24 +0100 Subject: [PATCH 4/4] Some breaking changes --- client/src/List.svelte | 13 ++++++------- client/src/store.js | 1 - 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/client/src/List.svelte b/client/src/List.svelte index bc1236d..8101420 100644 --- a/client/src/List.svelte +++ b/client/src/List.svelte @@ -212,7 +212,6 @@ async function ask() { let q; - /* eslint-disable no-constant-condition */ while (true) { q = prompt("Question:", q || ""); if (q === null) { @@ -304,9 +303,9 @@
{#if unanswered.length > 0}
- {#each unanswered as question (question.qid)} + {#each unanswered as question, i (question.qid)}
- +
{/each}
@@ -329,9 +328,9 @@ >
- {#each answered as question (question.qid)} + {#each answered as question, i (question.qid)}
- +
{/each}
@@ -341,9 +340,9 @@

Hidden

- {#each hidden as question (question.qid)} + {#each hidden as question, i (question.qid)}
- +
{/each}
diff --git a/client/src/store.js b/client/src/store.js index d5da1c2..c6f1257 100644 --- a/client/src/store.js +++ b/client/src/store.js @@ -104,7 +104,6 @@ export async function questionData(qid, qs) { _reject = reject1; }); - /* eslint-disable no-constant-condition */ while (true) { // make the current batch of qids (and their promises). fetching = batch;