diff --git a/package.json b/package.json
index 03f7bc95..e7390f89 100644
--- a/package.json
+++ b/package.json
@@ -21,6 +21,7 @@
"@eslint/js": "^10.0.1",
"@fontsource/lexend": "^5.3.0",
"@fontsource/spectral": "^5.3.0",
+ "@ianvs/prettier-plugin-sort-imports": "^4.7.1",
"@lucide/svelte": "^1.28.0",
"@maiertech/sveltekit-helpers": "^0.55.0",
"@playwright/test": "^1.62.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1b295c18..2d6d3f18 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -23,6 +23,9 @@ importers:
'@fontsource/spectral':
specifier: ^5.3.0
version: 5.3.0
+ '@ianvs/prettier-plugin-sort-imports':
+ specifier: ^4.7.1
+ version: 4.7.1(prettier@3.9.6)
'@lucide/svelte':
specifier: ^1.28.0
version: 1.28.0(svelte@5.56.8(@typescript-eslint/types@8.66.0))
@@ -91,7 +94,7 @@ importers:
version: 4.1.1(prettier@3.9.6)(svelte@5.56.8(@typescript-eslint/types@8.66.0))
prettier-plugin-tailwindcss:
specifier: ^0.8.1
- version: 0.8.1(prettier-plugin-svelte@4.1.1(prettier@3.9.6)(svelte@5.56.8(@typescript-eslint/types@8.66.0)))(prettier@3.9.6)
+ version: 0.8.1(@ianvs/prettier-plugin-sort-imports@4.7.1(prettier@3.9.6))(prettier-plugin-svelte@4.1.1(prettier@3.9.6)(svelte@5.56.8(@typescript-eslint/types@8.66.0)))(prettier@3.9.6)
shiki:
specifier: ^4.4.2
version: 4.4.2
@@ -128,6 +131,43 @@ importers:
packages:
+ '@babel/code-frame@7.29.7':
+ resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.29.8':
+ resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-globals@7.29.7':
+ resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.29.7':
+ resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.29.7':
+ resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.29.8':
+ resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/template@7.29.7':
+ resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.29.8':
+ resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.29.8':
+ resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==}
+ engines: {node: '>=6.9.0'}
+
'@content-collections/core@0.15.2':
resolution: {integrity: sha512-Oaz3J3lw/8NXxmV/YSsTl8tTmxscTiotNp1wUNDHvRqW0MtNU8a0h843XYCFWSrlW5q6dcVoM0rGb2UF8kX5Ig==}
peerDependencies:
@@ -386,6 +426,24 @@ packages:
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'}
+ '@ianvs/prettier-plugin-sort-imports@4.7.1':
+ resolution: {integrity: sha512-jmTNYGlg95tlsoG3JLCcuC4BrFELJtLirLAkQW/71lXSyOhVt/Xj7xWbbGcuVbNq1gwWgSyMrPjJc9Z30hynVw==}
+ peerDependencies:
+ '@prettier/plugin-oxc': ^0.0.4 || ^0.1.0
+ '@vue/compiler-sfc': 2.7.x || 3.x
+ content-tag: ^4.0.0
+ prettier: 2 || 3 || ^4.0.0-0
+ prettier-plugin-ember-template-tag: ^2.1.0
+ peerDependenciesMeta:
+ '@prettier/plugin-oxc':
+ optional: true
+ '@vue/compiler-sfc':
+ optional: true
+ content-tag:
+ optional: true
+ prettier-plugin-ember-template-tag:
+ optional: true
+
'@img/colour@1.1.0':
resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
engines: {node: '>=18'}
@@ -1915,10 +1973,18 @@ packages:
resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
hasBin: true
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
js-yaml@3.15.1:
resolution: {integrity: sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==}
hasBin: true
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -2681,6 +2747,53 @@ packages:
snapshots:
+ '@babel/code-frame@7.29.7':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.29.7
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/generator@7.29.8':
+ dependencies:
+ '@babel/parser': 7.29.8
+ '@babel/types': 7.29.8
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+
+ '@babel/helper-globals@7.29.7': {}
+
+ '@babel/helper-string-parser@7.29.7': {}
+
+ '@babel/helper-validator-identifier@7.29.7': {}
+
+ '@babel/parser@7.29.8':
+ dependencies:
+ '@babel/types': 7.29.8
+
+ '@babel/template@7.29.7':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/parser': 7.29.8
+ '@babel/types': 7.29.8
+
+ '@babel/traverse@7.29.8':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/generator': 7.29.8
+ '@babel/helper-globals': 7.29.7
+ '@babel/parser': 7.29.8
+ '@babel/template': 7.29.7
+ '@babel/types': 7.29.8
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.29.8':
+ dependencies:
+ '@babel/helper-string-parser': 7.29.7
+ '@babel/helper-validator-identifier': 7.29.7
+
'@content-collections/core@0.15.2(typescript@6.0.3)':
dependencies:
'@standard-schema/spec': 1.1.0
@@ -2870,6 +2983,17 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {}
+ '@ianvs/prettier-plugin-sort-imports@4.7.1(prettier@3.9.6)':
+ dependencies:
+ '@babel/generator': 7.29.8
+ '@babel/parser': 7.29.8
+ '@babel/traverse': 7.29.8
+ '@babel/types': 7.29.8
+ prettier: 3.9.6
+ semver: 7.8.5
+ transitivePeerDependencies:
+ - supports-color
+
'@img/colour@1.1.0': {}
'@img/sharp-darwin-arm64@0.34.5':
@@ -4363,11 +4487,15 @@ snapshots:
jiti@2.7.0: {}
+ js-tokens@4.0.0: {}
+
js-yaml@3.15.1:
dependencies:
argparse: 1.0.10
esprima: 4.0.1
+ jsesc@3.1.0: {}
+
json-buffer@3.0.1: {}
json-schema-traverse@0.4.1: {}
@@ -4699,10 +4827,11 @@ snapshots:
prettier: 3.9.6
svelte: 5.56.8(@typescript-eslint/types@8.66.0)
- prettier-plugin-tailwindcss@0.8.1(prettier-plugin-svelte@4.1.1(prettier@3.9.6)(svelte@5.56.8(@typescript-eslint/types@8.66.0)))(prettier@3.9.6):
+ prettier-plugin-tailwindcss@0.8.1(@ianvs/prettier-plugin-sort-imports@4.7.1(prettier@3.9.6))(prettier-plugin-svelte@4.1.1(prettier@3.9.6)(svelte@5.56.8(@typescript-eslint/types@8.66.0)))(prettier@3.9.6):
dependencies:
prettier: 3.9.6
optionalDependencies:
+ '@ianvs/prettier-plugin-sort-imports': 4.7.1(prettier@3.9.6)
prettier-plugin-svelte: 4.1.1(prettier@3.9.6)(svelte@5.56.8(@typescript-eslint/types@8.66.0))
prettier@3.9.6: {}
diff --git a/prettier.config.js b/prettier.config.js
index f69a015f..8625b80b 100644
--- a/prettier.config.js
+++ b/prettier.config.js
@@ -5,7 +5,11 @@ const config = {
trailingComma: 'none',
printWidth: 100,
proseWrap: 'always',
- plugins: ['prettier-plugin-svelte', 'prettier-plugin-tailwindcss'],
+ plugins: [
+ 'prettier-plugin-svelte',
+ '@ianvs/prettier-plugin-sort-imports',
+ 'prettier-plugin-tailwindcss'
+ ],
tailwindStylesheet: './src/app.css',
overrides: [
{
diff --git a/src/collections/posts/index.ts b/src/collections/posts/index.ts
index 7fe06f5f..ede4e54a 100644
--- a/src/collections/posts/index.ts
+++ b/src/collections/posts/index.ts
@@ -1,8 +1,8 @@
-import { defineCollection } from '@content-collections/core';
-import { postMetaSchema } from '@maiertech/sveltekit-helpers';
import { execSync } from 'child_process';
import { readFileSync, writeFileSync } from 'fs';
import { resolve } from 'path';
+import { defineCollection } from '@content-collections/core';
+import { postMetaSchema } from '@maiertech/sveltekit-helpers';
import { collection as authors } from '../authors/index.js';
import { collection as tags } from '../tags/index.js';
diff --git a/src/lib/components/stackblitz-embed.svelte b/src/lib/components/stackblitz-embed.svelte
index 5bf90c9e..2fd9484b 100644
--- a/src/lib/components/stackblitz-embed.svelte
+++ b/src/lib/components/stackblitz-embed.svelte
@@ -1,6 +1,6 @@
diff --git a/src/routes/guides/+layout.server.ts b/src/routes/guides/+layout.server.ts
index 33add1ad..f206d8e4 100644
--- a/src/routes/guides/+layout.server.ts
+++ b/src/routes/guides/+layout.server.ts
@@ -1,7 +1,7 @@
+import { error } from '@sveltejs/kit';
import { ORIGIN } from '$env/static/private';
import { sorted as guides } from '$lib/server/collections/guides.js';
import { latest as latestVideos } from '$lib/server/collections/videos.js';
-import { error } from '@sveltejs/kit';
import type { LayoutServerLoad } from './$types';
export const prerender = true;
diff --git a/src/routes/guides/+layout.svelte b/src/routes/guides/+layout.svelte
index 60b76d1a..48e31717 100644
--- a/src/routes/guides/+layout.svelte
+++ b/src/routes/guides/+layout.svelte
@@ -1,7 +1,7 @@