From a2fd79f60a905570c872520537b98c98fb2dec07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jok=C5=ABbas=20Banaitis?= Date: Fri, 23 Jan 2026 20:20:59 +0200 Subject: [PATCH 1/2] Higher res site banner --- project.inlang/.meta.json | 3 + project.inlang/README.md | 103 ++++++++++++++++++ src/app.css | 2 +- .../components/common/BackgroundImage.svelte | 10 +- src/lib/components/common/Header.svelte | 34 ++++-- src/lib/images/logo.gif | Bin 10210 -> 28349 bytes 6 files changed, 143 insertions(+), 9 deletions(-) create mode 100644 project.inlang/.meta.json create mode 100644 project.inlang/README.md diff --git a/project.inlang/.meta.json b/project.inlang/.meta.json new file mode 100644 index 0000000..e3a9770 --- /dev/null +++ b/project.inlang/.meta.json @@ -0,0 +1,3 @@ +{ + "highestSdkVersion": "2.6.0" +} \ No newline at end of file diff --git a/project.inlang/README.md b/project.inlang/README.md new file mode 100644 index 0000000..e8bd2f8 --- /dev/null +++ b/project.inlang/README.md @@ -0,0 +1,103 @@ + +## What is this folder? + +This is an [unpacked (git-friendly)](https://inlang.com/docs/unpacked-project) inlang project. + +## At a glance + +Purpose: +- This folder stores inlang project configuration and plugin cache data. +- Translation files live outside this folder and are referenced from `settings.json`. + +Safe to edit: +- `settings.json` + +Do not edit: +- `cache/` +- `.gitignore` + +Key files: +- `settings.json` — locales, plugins, file patterns (source of truth) +- `cache/` — plugin caches (safe to delete) +- `.gitignore` — generated + +``` +*.inlang/ +├── settings.json # Locales, plugins, and file patterns (source of truth) +├── cache/ # Plugin caches (gitignored) +└── .gitignore # Ignores everything except settings.json +``` + +Translation files (like `messages/en.json`) live **outside** this folder and are referenced via plugins in `settings.json`. + +## What is inlang? + +[Inlang](https://inlang.com) is an open file format for building custom localization (i18n) tooling. It provides: + +- **CRUD API** — Read and write translations programmatically via SQL +- **Plugin system** — Import/export any format (JSON, XLIFF, etc.) +- **Version control** — Built-in version control via [lix](https://lix.dev) + +``` +┌──────────┐ ┌───────────┐ ┌────────────┐ +│ i18n lib │ │Translation│ │ CI/CD │ +│ │ │ Tool │ │ Automation │ +└────┬─────┘ └─────┬─────┘ └─────┬──────┘ + │ │ │ + └─────────┐ │ ┌──────────┘ + ▼ ▼ ▼ + ┌──────────────────────────────────┐ + │ *.inlang file │ + └──────────────────────────────────┘ +``` + +## Quick start + +```bash +npm install @inlang/sdk +``` + +```ts +import { loadProjectFromDirectory, saveProjectToDirectory } from "@inlang/sdk"; + +const project = await loadProjectFromDirectory({ path: "./project.inlang" }); +// Query messages with SQLite + [Kysely](https://kysely.dev/) under the hood. +const messages = await project.db.selectFrom("message").selectAll().execute(); + +// Use project.db to update messages. +await saveProjectToDirectory({ path: "./project.inlang", project }); +``` + +## Ideas for custom tooling + +- Translation health dashboard (missing/empty/stale messages) +- Locale coverage report in CI +- Auto-PR for new keys with placeholders +- Migration tool between file formats via plugins +- Glossary/term consistency checker + +## Data model ([docs](https://inlang.com/docs/data-model)) + +``` +bundle (a concept, e.g., "welcome_header") + └── message (per locale, e.g., "en", "de") + └── variant (plural forms, gender, etc.) +``` + +- **bundle**: Groups messages by ID (e.g., `welcome_header`) +- **message**: A translation for a specific locale +- **variant**: Handles pluralization/selectors (most messages have one variant) + +## Common tasks + +- List bundles: `project.db.selectFrom("bundle").selectAll().execute()` +- List messages for locale: `project.db.selectFrom("message").where("locale", "=", "en").selectAll().execute()` +- Find missing translations: compare message counts across locales +- Update a message: `project.db.updateTable("message").set({ ... }).where("id", "=", "...").execute()` + +## Links + +- [SDK documentation](https://inlang.com/docs) +- [inlang.com](https://inlang.com) +- [List of plugins](https://inlang.com/c/plugins) +- [List of tools](https://inlang.com/c/tools) diff --git a/src/app.css b/src/app.css index 9c448d7..c21e87a 100644 --- a/src/app.css +++ b/src/app.css @@ -4,7 +4,7 @@ :root { --font-body: "Fira Mono", "Courier New", "Courier Prime", monospace; --font-mono: "Fira Mono", "Courier Prime", monospace; - --color-bg: #070709; + --color-bg: #040204; --column-width: 42rem; --column-margin-top: 4rem; font-family: var(--font-body); diff --git a/src/lib/components/common/BackgroundImage.svelte b/src/lib/components/common/BackgroundImage.svelte index 5d8ef8f..1860eb9 100644 --- a/src/lib/components/common/BackgroundImage.svelte +++ b/src/lib/components/common/BackgroundImage.svelte @@ -6,7 +6,7 @@ {#key backgroundImage}
diff --git a/src/lib/components/common/Header.svelte b/src/lib/components/common/Header.svelte index 7b2440b..29d7c48 100644 --- a/src/lib/components/common/Header.svelte +++ b/src/lib/components/common/Header.svelte @@ -8,6 +8,7 @@
+ {description}
    .__                     .___                            .__   __   
     |  |__ _____ _______  __| _/____  ___________   ____    |  |_/  |_ 
@@ -19,8 +20,7 @@
     
{description} 
- {description}
+
diff --git a/src/lib/images/logo.gif b/src/lib/images/logo.gif index 7fcda3bb16093ab8645ce242b4bd5dde74512342..7052f539c5d49ca22cb92a5aa4ab9a4ea4bcc1d8 100644 GIT binary patch literal 28349 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�D?uv0ZsdMpS&J8>P>K>ZcZ$n1kk)zjUt+<@ zCyg}_u?e<|KFDQRTR4tKmJQGf2d%2{p8AZbv1P9vb;BY6mH9If0-jIvT6dNeLBB0( zi!5*FS%__wm`ewH+4jY_3zrEPuP%8C$u;+9x)_TT4RkoNH{RD6zwf2~Ox+=1YZ(?| zoBw*rlSRIOp-Ei1>8@4tEVC!_ZbNypLhwCIfT(vC>ur4TJ(cH&RSIiEQY`mwwv8Ch z(B_G{ROFwiwH1HDKbJhs>g<}nE{ztPRcPOwn^H-mAITeg&+_qoE(cNUbGvl&s7Pc~yTCNX z!y_OJ9ocZ`m-lH`=OLo-N$72hy$g)dj$98GEnH7?y75u8|KM*f$;&|h`RkTzcgF^} zp5nzOkoXBHs|o3|WT}t0zmH4|e0Y&|21qmpF8c6PP+HWdP@?l3{qK5O135iM>X)^n zFWExDKJA}wST2q}TSbUO3Hbj`Yn^>x#&Q3~kzK{r&Oa1X^mDnOrht#yi^x#EmY|HtF~qcKsT$)$wQGjmRgCs~|S zAJu#mx+*mOU6Gh98|~=kkKq~|$DNC)MN&BBc8-L;ndOarpprOn(YF-)TGYx(2LW(C#unMVGM47c;~LQu=@ZnM zTe&7Ra&~d8-6@zcB3yYiay8zcDC1yvKIQ)Dr;=nFgw23Clt2H8y#+NB9`e8q%%g{r z4;O`J+iH3G!gFB{#Xc&r##m|Y{l|KWo`qa>t1PcdhYu#*`Sb2ESMtq*cRG%q!-ZYa zbrFJ99Sh6)pm_B=YnGLLGfbg6V!fyVUs>t)-&HYm6*v>VhpK7JeywP=-v0gEw~Y1N`|G{=>#vJT zt16z~S(zv~iWa?Gwb7njw$FBd!4&7EU(Id2KK5-~{M*QJ#LFm7@IAAiLLeQEujZnQnW3xA6w{un|S4I&T|N< zbK5efw>8SQ6<%*EJ`Yvq*-_5fZ2Sq6O;#OshTxmGbYJi2|JdPI+3`?EIQF21=DGEn zWi`dtJ}t02+9K=KcAretCB8^IW!)nA0(5Ir!SMB-=a0S9JU_jaWtZ)CG@pwb>Ws@Hz>Y zSa1V!0a;s~)n`AipF6mjb5Q)?U};PGG_VufeIP}iGV2!q4ATPE$46|gusNnfKuKf3n z&EK~wFC{JI9?}$=!AX0LCfvOg1^_@hi|Jp23fV82 zJgS&Ehstv>> z2);B2x8VCBSBh1sy6j0EoXpoVEhzT+o=N*}?vKuXe3mNW^4+5|`rF)7tjWvFWa&*Y zR`3xoPJ57wKFU*{3 zbe;R~q+mdnFkbR*`Q;tcJ6?Yiem?B0Bl+k@Co#4ub*I=V{kJaGp;;>Bw-bu!4U)K9 zoJ0f!LG$T>UE}D>{3%`4OyyGUCmHR!cC6e8ISxf1smEPEgVwB#RR;JZNJ%{~k@G4h zSR|=(P`J3LTwKLEQ#LCk4HQ`vGMj56jK7+K8FSl(*OVf literal 10210 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 Date: Sun, 25 Jan 2026 14:33:18 +0200 Subject: [PATCH 2/2] Upgrade packages --- .github/workflows/ci.yml | 2 +- package-lock.json | 238 +++++++++++++++++++-------------------- package.json | 22 ++-- 3 files changed, 131 insertions(+), 131 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab3c92c..7667f7b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: test: runs-on: ubuntu-latest container: - image: mcr.microsoft.com/playwright:v1.57.0-noble + image: mcr.microsoft.com/playwright:v1.58.0-noble services: db: image: postgres:15 diff --git a/package-lock.json b/package-lock.json index a26ec32..72b8234 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@fontsource/courier-prime": "^5.2.8", "@fortawesome/free-solid-svg-icons": "^7.1.0", "@friendofsvelte/toggle": "^0.0.4-svelte.5", - "@inlang/paraglide-js": "^2.8.0", + "@inlang/paraglide-js": "^2.9.1", "@node-rs/argon2": "^2.0.2", "@oslojs/crypto": "^1.0.1", "@oslojs/encoding": "^1.1.0", @@ -22,25 +22,25 @@ "postgres": "^3.4.8", "rehype-raw": "^7.0.0", "remark-youtube": "^1.3.3", - "remove-markdown": "^0.6.2", + "remove-markdown": "^0.6.3", "rss": "^1.2.2", "svelte-exmarkdown": "^5.0.2", "svelte-fa": "^4.0.4", "svelte-relative-time": "^0.0.6", "validator": "^13.15.26", - "zod": "^4.3.5" + "zod": "^4.3.6" }, "devDependencies": { "@eslint/compat": "^2.0.1", "@eslint/js": "^9.39.2", "@fontsource/fira-mono": "^5.2.7", "@neoconfetti/svelte": "^2.2.2", - "@playwright/test": "^1.57.0", + "@playwright/test": "^1.58.0", "@sveltejs/adapter-auto": "^7.0.0", - "@sveltejs/adapter-node": "^5.5.0", - "@sveltejs/kit": "^2.49.4", + "@sveltejs/adapter-node": "^5.5.2", + "@sveltejs/kit": "^2.50.1", "@sveltejs/vite-plugin-svelte": "^6.2.4", - "@types/node": "^25.0.8", + "@types/node": "^25.0.10", "@types/rss": "^0.0.32", "@types/validator": "^13.15.10", "date-picker-svelte": "^2.17.0", @@ -48,13 +48,13 @@ "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-svelte": "^3.14.0", - "globals": "^17.0.0", - "prettier": "^3.7.4", + "globals": "^17.1.0", + "prettier": "^3.8.1", "prettier-plugin-svelte": "^3.4.1", - "svelte": "^5.46.3", + "svelte": "^5.48.2", "svelte-check": "^4.3.5", "typescript": "^5.9.3", - "typescript-eslint": "^8.53.0", + "typescript-eslint": "^8.53.1", "vite": "^7.3.1" } }, @@ -1278,13 +1278,13 @@ } }, "node_modules/@inlang/paraglide-js": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@inlang/paraglide-js/-/paraglide-js-2.8.0.tgz", - "integrity": "sha512-ataaSmV53zz+tIr+KJLdC3tTB1uikS79hvtLlZk2ikbGRB/kcyQeg+lsqzjsXCAvy0/O28ucCRjxbHsTzOVQVg==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@inlang/paraglide-js/-/paraglide-js-2.9.1.tgz", + "integrity": "sha512-hciFnOKGVA10BmLixmFFIOZwNFqlyhKwvC8V+mEh/XP1WaEUtwijBlcIn2odwN9obuGxI8Fu05KHOUuETrpj+g==", "license": "MIT", "dependencies": { "@inlang/recommend-sherlock": "^0.2.1", - "@inlang/sdk": "2.6.0", + "@inlang/sdk": "2.6.2", "commander": "11.1.0", "consola": "3.4.0", "json5": "2.2.3", @@ -1305,9 +1305,9 @@ } }, "node_modules/@inlang/sdk": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@inlang/sdk/-/sdk-2.6.0.tgz", - "integrity": "sha512-f4iVHVXyzOi0CXlXSAT7XPrReLBaVXy/po/qrOPf2OHh+hUwyD1bDx2EYC5KgrZ16z3ylWfqWVuc7o4l7/tuUQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@inlang/sdk/-/sdk-2.6.2.tgz", + "integrity": "sha512-eOgAX+eQpHvD/H4BMILc4tZ85XviTlwr/51RKkKUHozVVthj5avUPKP+4N4vcTUrqSscl2atTh9NbNTuvoBN0A==", "license": "MIT", "dependencies": { "@lix-js/sdk": "0.4.7", @@ -1705,13 +1705,13 @@ "license": "MIT" }, "node_modules/@playwright/test": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", - "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.0.tgz", + "integrity": "sha512-fWza+Lpbj6SkQKCrU6si4iu+fD2dD3gxNHFhUPxsfXBPhnv3rRSQVd0NtBUT9Z/RhF/boCBcuUaMUSTRTopjZg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.57.0" + "playwright": "1.58.0" }, "bin": { "playwright": "cli.js" @@ -2169,9 +2169,9 @@ } }, "node_modules/@sveltejs/adapter-node": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-5.5.0.tgz", - "integrity": "sha512-xHzWyo2vRYqR/DyyFboIOVplz411RAyZvt0/UVPebRIhg3PGXty09mjiRt0nPj7zL0oPxqeCTu4RmHdsFkP/7w==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-5.5.2.tgz", + "integrity": "sha512-L15Djwpr7HrSAPj/Z8PYfc0pa9A1tllrr18phKI0WJHJeoWw45yinPf0IGgVTmakqx1B3JQ+C/OFl9ZwmxHU1Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2185,9 +2185,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.49.4", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.49.4.tgz", - "integrity": "sha512-JFtOqDoU0DI/+QSG8qnq5bKcehVb3tCHhOG4amsSYth5/KgO4EkJvi42xSAiyKmXAAULW1/Zdb6lkgGEgSxdZg==", + "version": "2.50.1", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.50.1.tgz", + "integrity": "sha512-XRHD2i3zC4ukhz2iCQzO4mbsts081PAZnnMAQ7LNpWeYgeBmwMsalf0FGSwhFXBbtr2XViPKnFJBDCckWqrsLw==", "dev": true, "license": "MIT", "dependencies": { @@ -2196,7 +2196,7 @@ "@types/cookie": "^0.6.0", "acorn": "^8.14.1", "cookie": "^0.6.0", - "devalue": "^5.3.2", + "devalue": "^5.6.2", "esm-env": "^1.2.2", "kleur": "^4.1.5", "magic-string": "^0.30.5", @@ -2330,9 +2330,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.8.tgz", - "integrity": "sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg==", + "version": "25.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", + "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", "dev": true, "license": "MIT", "dependencies": { @@ -2367,17 +2367,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz", - "integrity": "sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz", + "integrity": "sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/type-utils": "8.53.0", - "@typescript-eslint/utils": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/type-utils": "8.53.1", + "@typescript-eslint/utils": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -2390,7 +2390,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.53.0", + "@typescript-eslint/parser": "^8.53.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -2406,16 +2406,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.0.tgz", - "integrity": "sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.1.tgz", + "integrity": "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "debug": "^4.4.3" }, "engines": { @@ -2431,14 +2431,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.0.tgz", - "integrity": "sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.1.tgz", + "integrity": "sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.53.0", - "@typescript-eslint/types": "^8.53.0", + "@typescript-eslint/tsconfig-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", "debug": "^4.4.3" }, "engines": { @@ -2453,14 +2453,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", - "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz", + "integrity": "sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0" + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2471,9 +2471,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz", - "integrity": "sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz", + "integrity": "sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==", "dev": true, "license": "MIT", "engines": { @@ -2488,15 +2488,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.0.tgz", - "integrity": "sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz", + "integrity": "sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0", - "@typescript-eslint/utils": "8.53.0", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/utils": "8.53.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -2513,9 +2513,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", - "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.1.tgz", + "integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==", "dev": true, "license": "MIT", "engines": { @@ -2527,16 +2527,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", - "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz", + "integrity": "sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.53.0", - "@typescript-eslint/tsconfig-utils": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/project-service": "8.53.1", + "@typescript-eslint/tsconfig-utils": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -2581,16 +2581,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.0.tgz", - "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.1.tgz", + "integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0" + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2605,13 +2605,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", - "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz", + "integrity": "sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/types": "8.53.1", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -3030,9 +3030,9 @@ } }, "node_modules/devalue": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz", - "integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", + "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", "license": "MIT" }, "node_modules/devlop": { @@ -3719,9 +3719,9 @@ } }, "node_modules/globals": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.0.0.tgz", - "integrity": "sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.1.0.tgz", + "integrity": "sha512-8HoIcWI5fCvG5NADj4bDav+er9B9JMj2vyL2pI8D0eismKyUvPLTSs+Ln3wqhwcp306i73iyVnEKx3F6T47TGw==", "dev": true, "license": "MIT", "engines": { @@ -5200,13 +5200,13 @@ } }, "node_modules/playwright": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", - "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.0.tgz", + "integrity": "sha512-2SVA0sbPktiIY/MCOPX8e86ehA/e+tDNq+e5Y8qjKYti2Z/JG7xnronT/TXTIkKbYGWlCbuucZ6dziEgkoEjQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.57.0" + "playwright-core": "1.58.0" }, "bin": { "playwright": "cli.js" @@ -5219,9 +5219,9 @@ } }, "node_modules/playwright-core": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", - "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.0.tgz", + "integrity": "sha512-aaoB1RWrdNi3//rOeKuMiS65UCcgOVljU46At6eFcOFPFHWtd2weHRRow6z/n+Lec0Lvu0k9ZPKJSjPugikirw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5407,9 +5407,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { @@ -5564,9 +5564,9 @@ } }, "node_modules/remove-markdown": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/remove-markdown/-/remove-markdown-0.6.2.tgz", - "integrity": "sha512-EijDXJZbzpGbQBd852ViUzcqgpMujthM+SAEHiWCMcZonRbZ+xViWKLJA/vrwbDwYdxrs1aFDjpBhcGrZoJRGA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/remove-markdown/-/remove-markdown-0.6.3.tgz", + "integrity": "sha512-Qvp2p0Q1irE7AaJO7QemJe04HdObHylJrG+q4hszvPlYp7q4EvfINpEIaIEFdB+3XTDp1h6fiyT60ae00gmRow==", "license": "MIT" }, "node_modules/repeat-string": { @@ -5833,9 +5833,9 @@ } }, "node_modules/svelte": { - "version": "5.46.3", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.3.tgz", - "integrity": "sha512-Y5juST3x+/ySty5tYJCVWa6Corkxpt25bUZQHqOceg9xfMUtDsFx6rCsG6cYf1cA6vzDi66HIvaki0byZZX95A==", + "version": "5.48.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.48.2.tgz", + "integrity": "sha512-VPWD+UyoSFZ7Nxix5K/F8yWiKWOiROkLlWYXOZReE0TUycw+58YWB3D6lAKT+57xmN99wRX4H3oZmw0NPy7y3Q==", "license": "MIT", "dependencies": { "@jridgewell/remapping": "^2.3.4", @@ -5846,7 +5846,7 @@ "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", - "devalue": "^5.5.0", + "devalue": "^5.6.2", "esm-env": "^1.2.1", "esrap": "^2.2.1", "is-reference": "^3.0.3", @@ -6040,16 +6040,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.53.0.tgz", - "integrity": "sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.53.1.tgz", + "integrity": "sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.53.0", - "@typescript-eslint/parser": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0", - "@typescript-eslint/utils": "8.53.0" + "@typescript-eslint/eslint-plugin": "8.53.1", + "@typescript-eslint/parser": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/utils": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6872,9 +6872,9 @@ "license": "MIT" }, "node_modules/zod": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", - "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 0548e3d..f11a52e 100644 --- a/package.json +++ b/package.json @@ -22,12 +22,12 @@ "@eslint/js": "^9.39.2", "@fontsource/fira-mono": "^5.2.7", "@neoconfetti/svelte": "^2.2.2", - "@playwright/test": "^1.57.0", + "@playwright/test": "^1.58.0", "@sveltejs/adapter-auto": "^7.0.0", - "@sveltejs/adapter-node": "^5.5.0", - "@sveltejs/kit": "^2.49.4", + "@sveltejs/adapter-node": "^5.5.2", + "@sveltejs/kit": "^2.50.1", "@sveltejs/vite-plugin-svelte": "^6.2.4", - "@types/node": "^25.0.8", + "@types/node": "^25.0.10", "@types/rss": "^0.0.32", "@types/validator": "^13.15.10", "date-picker-svelte": "^2.17.0", @@ -35,20 +35,20 @@ "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-svelte": "^3.14.0", - "globals": "^17.0.0", - "prettier": "^3.7.4", + "globals": "^17.1.0", + "prettier": "^3.8.1", "prettier-plugin-svelte": "^3.4.1", - "svelte": "^5.46.3", + "svelte": "^5.48.2", "svelte-check": "^4.3.5", "typescript": "^5.9.3", - "typescript-eslint": "^8.53.0", + "typescript-eslint": "^8.53.1", "vite": "^7.3.1" }, "dependencies": { "@fontsource/courier-prime": "^5.2.8", "@fortawesome/free-solid-svg-icons": "^7.1.0", "@friendofsvelte/toggle": "^0.0.4-svelte.5", - "@inlang/paraglide-js": "^2.8.0", + "@inlang/paraglide-js": "^2.9.1", "@node-rs/argon2": "^2.0.2", "@oslojs/crypto": "^1.0.1", "@oslojs/encoding": "^1.1.0", @@ -59,12 +59,12 @@ "postgres": "^3.4.8", "rehype-raw": "^7.0.0", "remark-youtube": "^1.3.3", - "remove-markdown": "^0.6.2", + "remove-markdown": "^0.6.3", "rss": "^1.2.2", "svelte-exmarkdown": "^5.0.2", "svelte-fa": "^4.0.4", "svelte-relative-time": "^0.0.6", "validator": "^13.15.26", - "zod": "^4.3.5" + "zod": "^4.3.6" } }