From d14c03e3f2e3806e17852a440d2a39f377570758 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Fri, 6 Mar 2026 15:07:08 -0800 Subject: lint --- .oxlintrc.json | 2 +- package-lock.json | 55 ++++++++++++++++++++++ package.json | 2 + perf-test.ts | 3 -- src/components/AppHeader.svelte | 19 ++++---- src/lib/keyWrapping.ts | 4 +- src/lib/nip07.ts | 2 +- src/lib/nip17.ts | 2 +- .../(app)/[username]/(profile)/+layout.server.ts | 3 +- .../(app)/[username]/(profile)/+page.server.ts | 4 +- .../(app)/send/bitcoin/[address]/+layout.server.ts | 2 +- src/routes/(app)/settings/+layout.server.ts | 2 +- src/routes/(app)/settings/+layout.svelte | 2 +- src/routes/(app)/settings/security/+page.svelte | 2 +- src/routes/(static)/register/auth/+page.server.ts | 2 +- test/e2e/custodial-receive-bitcoin.spec.ts | 1 - test/e2e/custodial-receive-lightning.spec.ts | 1 - test/e2e/custodial-send-external-ln.spec.ts | 1 - test/e2e/custodial-send-lightning.spec.ts | 1 - test/e2e/helpers.ts | 4 +- test/e2e/mls-messaging.spec.ts | 2 +- test/e2e/vault-receive-bitcoin.spec.ts | 1 - test/e2e/vault-send-bob-btc.spec.ts | 1 - test/e2e/vault-send-to-custodial-btc.spec.ts | 2 - 24 files changed, 81 insertions(+), 39 deletions(-) diff --git a/.oxlintrc.json b/.oxlintrc.json index eb548825..e2a4d331 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -2,7 +2,7 @@ "$schema": "./node_modules/oxlint/configuration_schema.json", "plugins": ["typescript", "unicorn", "oxc"], "categories": { - "correctness": "warn" + "correctness": "error" }, "rules": { "no-self-assign": "off", diff --git a/package-lock.json b/package-lock.json index 30ae0c97..3cc58dae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,6 +52,7 @@ "rollup-plugin-visualizer": "^6.0.5", "svelte": "^5.49.1", "svelte-adapter-bun": "^1.0.1", + "svelte-check": "^4.4.4", "svelte-confetti": "^2.3.2", "svelte-preprocess": "^6.0.3", "sveltekit-i18n": "^2.4.2", @@ -3342,6 +3343,22 @@ "regexp-to-ast": "0.5.0" } }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/chownr": { "version": "3.0.0", "dev": true, @@ -7115,6 +7132,20 @@ "node": ">= 6" } }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/redent": { "version": "3.0.0", "dev": true, @@ -7932,6 +7963,30 @@ "typescript": "^5" } }, + "node_modules/svelte-check": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.4.4.tgz", + "integrity": "sha512-F1pGqXc710Oi/wTI4d/x7d6lgPwwfx1U6w3Q35n4xsC2e8C/yN2sM1+mWxjlMcpAfWucjlq4vPi+P4FZ8a14sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "chokidar": "^4.0.1", + "fdir": "^6.2.0", + "picocolors": "^1.0.0", + "sade": "^1.7.4" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" + } + }, "node_modules/svelte-confetti": { "version": "2.3.2", "dev": true, diff --git a/package.json b/package.json index d23caca3..fc9f4398 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "test:e2e:ark:headed": "test/e2e/run.sh headed", "test:e2e:ark:watch": "test/e2e/run.sh watch", "test:e2e:ark:debug": "test/e2e/run.sh debug", + "check": "svelte-check --tsconfig ./tsconfig.json", "lint": "oxlint . && oxfmt --check .", "lint:fix": "oxlint --fix . && oxfmt .", "format": "oxfmt .", @@ -64,6 +65,7 @@ "rollup-plugin-visualizer": "^6.0.5", "svelte": "^5.49.1", "svelte-adapter-bun": "^1.0.1", + "svelte-check": "^4.4.4", "svelte-confetti": "^2.3.2", "svelte-preprocess": "^6.0.3", "sveltekit-i18n": "^2.4.2", diff --git a/perf-test.ts b/perf-test.ts index 082d9113..74bde919 100644 --- a/perf-test.ts +++ b/perf-test.ts @@ -7,9 +7,6 @@ const BASE = "http://localhost:5173"; const context = await browser.newContext(); const page = await context.newPage(); - // Collect all network requests during navigation - const requests: { url: string; duration: number; size: number }[] = []; - // Login as bob console.log("=== Logging in as bob ==="); await page.goto(`${BASE}/login`); diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte index 0d70bf49..9b8eb3c5 100644 --- a/src/components/AppHeader.svelte +++ b/src/components/AppHeader.svelte @@ -24,16 +24,15 @@ let isHome = $derived($page.url.pathname === `/${user?.username}`); - const links = $derived([ - ...(!isHome - ? [ - { - href: `/${user?.username}`, - icon: PhHouseBold, - label: "Home", - }, - ] - : []), + const links = $derived(!isHome + ? [ + { + href: `/${user?.username}`, + icon: PhHouseBold, + label: "Home", + }, + ] + : [ // { // href: `/scan`, // icon: "ph:camera-bold", diff --git a/src/lib/keyWrapping.ts b/src/lib/keyWrapping.ts index 971b929c..31cb1e5c 100644 --- a/src/lib/keyWrapping.ts +++ b/src/lib/keyWrapping.ts @@ -1,5 +1,5 @@ import { prfEncrypt, prfDecrypt } from "$lib/crypto"; -import { rememberPrfKey, defaultRememberForMs, getCachedPrfKey } from "$lib/passwordCache"; +import { rememberPrfKey, defaultRememberForMs } from "$lib/passwordCache"; import { post } from "$lib/utils"; export function generateCanonicalKey(): ArrayBuffer { @@ -36,7 +36,7 @@ export async function resolveCanonicalKey( // Migration: old PRF key becomes canonical key const canonicalKey = oldPrfKey; const wrapped = await wrapCanonicalKey(wrappingKey, canonicalKey); - const updated = { ...(encryptedKeys || {}), [methodId]: wrapped }; + const updated = { ...encryptedKeys, [methodId]: wrapped }; await saveEncryptedKeys(updated); rememberPrfKey(canonicalKey, defaultRememberForMs); return { canonicalKey, encryptedKeys: updated }; diff --git a/src/lib/nip07.ts b/src/lib/nip07.ts index 691e3bcd..dc774186 100644 --- a/src/lib/nip07.ts +++ b/src/lib/nip07.ts @@ -65,7 +65,7 @@ export const ensureSigner = async (userPubkey: string): Promise { diff --git a/test/e2e/custodial-receive-lightning.spec.ts b/test/e2e/custodial-receive-lightning.spec.ts index 5c35b557..5c1bfdc5 100644 --- a/test/e2e/custodial-receive-lightning.spec.ts +++ b/test/e2e/custodial-receive-lightning.spec.ts @@ -6,7 +6,6 @@ import { login, lightningPay, waitForInvoicePaid, - waitForPaidRedirect, } from "./helpers"; test("custodial receives external lightning payment from clb", async ({ page }) => { diff --git a/test/e2e/custodial-send-external-ln.spec.ts b/test/e2e/custodial-send-external-ln.spec.ts index 6142d9c8..baaa4c1b 100644 --- a/test/e2e/custodial-send-external-ln.spec.ts +++ b/test/e2e/custodial-send-external-ln.spec.ts @@ -5,7 +5,6 @@ import { loginNewContext, lightningInvoice, pasteAndSend, - clickSendButton, waitForSentRedirect, } from "./helpers"; diff --git a/test/e2e/custodial-send-lightning.spec.ts b/test/e2e/custodial-send-lightning.spec.ts index 62bf9415..88f87f40 100644 --- a/test/e2e/custodial-send-lightning.spec.ts +++ b/test/e2e/custodial-send-lightning.spec.ts @@ -7,7 +7,6 @@ import { apiBaseUrl, loginNewContext, pasteAndSend, - clickSendButton, waitForSentRedirect, waitForPaidRedirect, } from "./helpers"; diff --git a/test/e2e/helpers.ts b/test/e2e/helpers.ts index 28b2d4c4..e8d4d6f6 100644 --- a/test/e2e/helpers.ts +++ b/test/e2e/helpers.ts @@ -84,7 +84,7 @@ export async function apiGetInvoice(page: Page, invoiceId: string) { // --- Invoice creation via UI --- -export async function createBitcoinInvoiceViaUI(page: Page, username: string) { +export async function createBitcoinInvoiceViaUI(page: Page, _username: string) { await page.goto(`/invoice?type=bitcoin&address_type=bech32`); await page.waitForURL(/\/invoice\/[^/?#]+/, { timeout: 15_000 }); @@ -101,7 +101,7 @@ export async function createBitcoinInvoiceViaUI(page: Page, username: string) { return { invoiceId: invoiceId!, address }; } -export async function createLightningInvoiceViaUI(page: Page, username: string) { +export async function createLightningInvoiceViaUI(page: Page, _username: string) { await page.goto(`/invoice`); await page.waitForURL(/\/invoice\/[^/?#]+/, { timeout: 15_000 }); diff --git a/test/e2e/mls-messaging.spec.ts b/test/e2e/mls-messaging.spec.ts index 94955950..b73b90aa 100644 --- a/test/e2e/mls-messaging.spec.ts +++ b/test/e2e/mls-messaging.spec.ts @@ -99,7 +99,7 @@ test.describe("MLS messaging", () => { }); test("Messages appear in the chat list on /messages", async ({ browser }) => { - const { context: aliceCtx, page: alicePage, pubkey: alicePubkey } = await loginWithNsec(browser, aliceUsername, alicePassword); + const { context: aliceCtx, page: alicePage } = await loginWithNsec(browser, aliceUsername, alicePassword); const bobRes = await alicePage.request.get(`${apiBaseUrl}/users/${bobUsername}`); const bobPubkey = (await bobRes.json()).pubkey; diff --git a/test/e2e/vault-receive-bitcoin.spec.ts b/test/e2e/vault-receive-bitcoin.spec.ts index 0759d4c0..32fc9be4 100644 --- a/test/e2e/vault-receive-bitcoin.spec.ts +++ b/test/e2e/vault-receive-bitcoin.spec.ts @@ -10,7 +10,6 @@ import { bitcoinSend, mineBlocks, waitForInvoicePaid, - waitForPaidRedirect, } from "./helpers"; test("bitcoin vault receives external bitcoin payment from bitcoind", async ({ page }) => { diff --git a/test/e2e/vault-send-bob-btc.spec.ts b/test/e2e/vault-send-bob-btc.spec.ts index 3d375b7b..f8daa0fb 100644 --- a/test/e2e/vault-send-bob-btc.spec.ts +++ b/test/e2e/vault-send-bob-btc.spec.ts @@ -7,7 +7,6 @@ import { fillNumpadAmount, waitForSendComplete, setActiveAccount, - apiBaseUrl, apiLogin, ensureVaultAccount, fundVaultAccount, diff --git a/test/e2e/vault-send-to-custodial-btc.spec.ts b/test/e2e/vault-send-to-custodial-btc.spec.ts index aa52213c..c963b786 100644 --- a/test/e2e/vault-send-to-custodial-btc.spec.ts +++ b/test/e2e/vault-send-to-custodial-btc.spec.ts @@ -5,10 +5,8 @@ import { bobUsername, bobPassword, apiBaseUrl, - login, loginNewContext, setActiveAccount, - createBitcoinInvoiceViaUI, pasteAndSend, } from "./helpers"; -- cgit v1.2.3