diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 62b5abb..cd1fcd3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -13,7 +13,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
- node-version: 22
+ node-version: 24
- uses: pnpm/action-setup@a0ea98b2dc7d387a59324835f7421c1d5f8357b4 # v6.0.5
- run: pnpm install --frozen-lockfile
- run: pnpm run ci
diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
index 549784a..31dec26 100644
--- a/.github/workflows/e2e.yml
+++ b/.github/workflows/e2e.yml
@@ -28,7 +28,7 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
- node-version: 22
+ node-version: 24
- uses: pnpm/action-setup@a0ea98b2dc7d387a59324835f7421c1d5f8357b4 # v6.0.5
- name: Install dependencies
run: pnpm install --frozen-lockfile
@@ -38,9 +38,3 @@ jobs:
run: pnpm run e2e
env:
E2E_BASE_URL: ${{ needs.test_setup.outputs.preview_url }}
- # - uses: actions/upload-artifact@v4
- # if: always()
- # with:
- # name: playwright-report
- # path: playwright-report/
- # retention-days: 30
diff --git a/.gitignore b/.gitignore
index e7ec336..a0e537b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
.DS_Store
node_modules
/build
-/public
+/dist
/.svelte-kit
/package
.env
@@ -11,5 +11,7 @@ node_modules
/test-results/
/playwright-report/
/playwright/.cache/
+/public/rss.xml
actions-runner
+tsconfig.tsbuildinfo
diff --git a/.husky/pre-commit b/.husky/pre-commit
old mode 100755
new mode 100644
diff --git a/.oxfmtignore b/.oxfmtignore
new file mode 100644
index 0000000..5bfdf55
--- /dev/null
+++ b/.oxfmtignore
@@ -0,0 +1,6 @@
+dist
+node_modules
+playwright-report
+src/routeTree.gen.ts
+test-results
+tsconfig.tsbuildinfo
diff --git a/.oxlintrc.json b/.oxlintrc.json
new file mode 100644
index 0000000..1fcf2e1
--- /dev/null
+++ b/.oxlintrc.json
@@ -0,0 +1,3 @@
+{
+ "plugins": ["react", "jsx-a11y", "import"]
+}
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100644
index c56c0ce..0000000
--- a/.prettierignore
+++ /dev/null
@@ -1,16 +0,0 @@
-pnpm-lock.yaml
-.DS_Store
-node_modules
-/build
-/public
-/.svelte-kit
-/package
-.env
-.env.*
-!.env.example
-.vscode
-/test-results/
-/playwright-report/
-/playwright/.cache/
-
-actions-runner
diff --git a/eslint.config.js b/eslint.config.js
deleted file mode 100644
index 42117d3..0000000
--- a/eslint.config.js
+++ /dev/null
@@ -1,135 +0,0 @@
-import js from "@eslint/js";
-import tseslint from "@typescript-eslint/eslint-plugin";
-import tsparser from "@typescript-eslint/parser";
-import svelte from "eslint-plugin-svelte";
-import svelteParser from "svelte-eslint-parser";
-import prettier from "eslint-config-prettier";
-
-export default [
- {
- ignores: [
- "*.css",
- "*.html",
- "pnpm-lock.yaml",
- "build/**",
- ".svelte-kit/**",
- "dist/**",
- "node_modules/**",
- "playwright-report/**",
- "test-results/**",
- "public/**",
- "static/**",
- "actions-runner/**",
- ],
- },
- {
- files: ["**/*.js", "**/*.mjs"],
- languageOptions: {
- ecmaVersion: 2020,
- sourceType: "module",
- globals: {
- console: "readonly",
- process: "readonly",
- },
- },
- ...js.configs.recommended,
- },
- {
- files: ["**/*.ts", "**/*.tsx"],
- languageOptions: {
- parser: tsparser,
- parserOptions: {
- ecmaVersion: 2020,
- sourceType: "module",
- project: "./tsconfig.node.json",
- },
- },
- plugins: {
- "@typescript-eslint": tseslint,
- },
- rules: {
- ...tseslint.configs.recommended.rules,
- "@typescript-eslint/no-unused-vars": [
- "error",
- { argsIgnorePattern: "^_" },
- ],
- "@typescript-eslint/no-explicit-any": "warn",
- },
- },
- {
- files: ["src/**/*.ts", "src/**/*.tsx"],
- languageOptions: {
- parser: tsparser,
- parserOptions: {
- ecmaVersion: 2020,
- sourceType: "module",
- project: "./tsconfig.json",
- },
- },
- },
- {
- files: ["**/*.config.ts", "tests/**/*.ts", "*.ts"],
- languageOptions: {
- parser: tsparser,
- parserOptions: {
- ecmaVersion: 2020,
- sourceType: "module",
- },
- },
- plugins: {
- "@typescript-eslint": tseslint,
- },
- rules: {
- ...tseslint.configs.recommended.rules,
- "@typescript-eslint/no-unused-vars": [
- "error",
- { argsIgnorePattern: "^_" },
- ],
- "@typescript-eslint/no-explicit-any": "warn",
- },
- },
- {
- files: ["**/*.svelte"],
- languageOptions: {
- parser: svelteParser,
- parserOptions: {
- parser: tsparser,
- extraFileExtensions: [".svelte"],
- },
- },
- plugins: {
- svelte,
- },
- rules: {
- ...svelte.configs.recommended.rules,
- "svelte/no-target-blank": "error",
- "svelte/no-at-debug-tags": "warn",
- },
- },
- {
- files: ["src/**/*"],
- languageOptions: {
- globals: {
- window: "readonly",
- document: "readonly",
- navigator: "readonly",
- fetch: "readonly",
- },
- },
- },
-
- {
- files: ["tests/**/*", "**/*.spec.ts", "**/*.test.ts"],
- languageOptions: {
- globals: {
- test: "readonly",
- expect: "readonly",
- describe: "readonly",
- it: "readonly",
- beforeEach: "readonly",
- afterEach: "readonly",
- },
- },
- },
- prettier,
-];
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..af8ae5d
--- /dev/null
+++ b/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+ AJ Bienz
+
+
+
+
+
+
diff --git a/package.json b/package.json
index 3fc0ef5..75c4bb9 100644
--- a/package.json
+++ b/package.json
@@ -3,58 +3,55 @@
"version": "0.0.1",
"private": true,
"type": "module",
- "engines": {
- "node": ">=22"
- },
- "packageManager": "pnpm@11.0.8",
"scripts": {
"dev": "vite dev",
- "build": "vite build",
+ "build": "node scripts/rss.mjs && vite build",
"preview": "vite preview",
- "prepare": "svelte-kit sync && husky",
- "check": "svelte-check --tsconfig ./tsconfig.json",
- "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch",
- "lint": "prettier --plugin prettier-plugin-svelte --check . && eslint .",
- "lint:fix": "prettier --plugin prettier-plugin-svelte --write . && eslint --fix .",
- "ci": "pnpm run lint && pnpm run check && pnpm run build",
+ "prepare": "husky",
+ "check": "tsc",
+ "format": "oxfmt --ignore-path .oxfmtignore --write .",
+ "format:check": "oxfmt --ignore-path .oxfmtignore --check .",
+ "lint": "oxlint .",
+ "lint:fix": "oxlint --fix .",
+ "ci": "pnpm run format:check && pnpm run lint && pnpm run check && pnpm run build",
"e2e": "playwright test"
},
+ "dependencies": {
+ "@tanstack/react-router": "1.169.2",
+ "@tanstack/react-router-devtools": "1.166.13",
+ "react": "19.2.6",
+ "react-dom": "19.2.6"
+ },
"devDependencies": {
- "@eslint/js": "^10.0.1",
- "@opentelemetry/api": "^1.9.1",
- "@playwright/test": "^1.59.1",
- "@sveltejs/adapter-static": "3.0.10",
- "@sveltejs/kit": "2.59.1",
- "@sveltejs/vite-plugin-svelte": "^7.1.2",
- "@tailwindcss/postcss": "^4.2.4",
- "@tailwindcss/vite": "^4.2.4",
- "@types/node": "^25.6.2",
- "@typescript-eslint/eslint-plugin": "^8.59.2",
- "@typescript-eslint/parser": "^8.59.2",
- "autoprefixer": "^10.5.0",
- "eslint": "^10.3.0",
- "eslint-config-prettier": "^10.1.8",
- "eslint-plugin-svelte": "^3.17.1",
- "husky": "^9.1.7",
- "lint-staged": "^17.0.2",
- "mdsvex": "^0.12.7",
- "postcss": "^8.5.14",
- "prettier": "^3.8.3",
- "prettier-plugin-svelte": "^3.5.1",
- "prism-themes": "^1.9.0",
- "svelte": "^5.55.5",
- "svelte-check": "^4.4.8",
- "svelte-eslint-parser": "^1.6.1",
- "tailwindcss": "^4.2.4",
- "tslib": "^2.8.1",
- "typescript": "^6.0.3",
- "vite": "^8.0.11"
+ "@playwright/test": "1.59.1",
+ "@tanstack/router-plugin": "1.167.35",
+ "@types/markdown-it": "14.1.2",
+ "@types/node": "25.6.2",
+ "@types/prismjs": "1.26.5",
+ "@types/react": "19.2.14",
+ "@types/react-dom": "19.2.3",
+ "@vitejs/plugin-react": "6.0.1",
+ "husky": "9.1.7",
+ "lint-staged": "17.0.4",
+ "markdown-it": "14.1.0",
+ "oxfmt": "0.48.0",
+ "oxlint": "1.63.0",
+ "prismjs": "1.30.0",
+ "typescript": "6.0.3",
+ "vite": "8.0.11",
+ "vite-plugin-markdown": "2.2.0"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx,json,cjs,mjs,svelte}": [
- "bash -c 'pnpm run check'",
- "prettier --plugin prettier-plugin-svelte --write",
- "eslint --fix"
+ "*.{js,jsx,ts,tsx,json,cjs,mjs,css,md,yml,yaml,json}": [
+ "oxfmt --write"
+ ],
+ "*.{js,jsx,ts,tsx}": [
+ "oxlint --fix",
+ "bash -c 'pnpm run check'"
]
- }
+ },
+ "engines": {
+ "node": ">=24"
+ },
+ "packageManager": "pnpm@11.0.8"
}
diff --git a/playwright.config.ts b/playwright.config.ts
index b93e964..cb81dca 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -10,15 +10,12 @@ const config: PlaywrightTestConfig = {
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
- /* Opt out of parallel tests on CI. */
- // workers: process.env.CI ? 1 : undefined,
reporter: "html",
use: {
actionTimeout: 0,
baseURL: process.env.E2E_BASE_URL ?? "http://localhost:4173",
trace: "on-first-retry",
},
-
projects: [
{
name: "chromium",
@@ -55,6 +52,7 @@ const config: PlaywrightTestConfig = {
webServer: {
command: "pnpm run build && pnpm run preview",
port: 4173,
+ reuseExistingServer: !process.env.CI,
},
};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 92801e8..2093d42 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -7,168 +7,165 @@ settings:
importers:
.:
+ dependencies:
+ '@tanstack/react-router':
+ specifier: 1.169.2
+ version: 1.169.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@tanstack/react-router-devtools':
+ specifier: 1.166.13
+ version: 1.166.13(@tanstack/react-router@1.169.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@tanstack/router-core@1.169.2)(csstype@3.2.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ react:
+ specifier: 19.2.6
+ version: 19.2.6
+ react-dom:
+ specifier: 19.2.6
+ version: 19.2.6(react@19.2.6)
devDependencies:
- '@eslint/js':
- specifier: ^10.0.1
- version: 10.0.1(eslint@10.3.0(jiti@2.7.0))
- '@opentelemetry/api':
- specifier: ^1.9.1
- version: 1.9.1
'@playwright/test':
- specifier: ^1.59.1
+ specifier: 1.59.1
version: 1.59.1
- '@sveltejs/adapter-static':
- specifier: 3.0.10
- version: 3.0.10(@sveltejs/kit@2.59.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.55.5(@typescript-eslint/types@8.59.2))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)))(svelte@5.55.5(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)))
- '@sveltejs/kit':
- specifier: 2.59.1
- version: 2.59.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.55.5(@typescript-eslint/types@8.59.2))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)))(svelte@5.55.5(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
- '@sveltejs/vite-plugin-svelte':
- specifier: ^7.1.2
- version: 7.1.2(svelte@5.55.5(@typescript-eslint/types@8.59.2))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
- '@tailwindcss/postcss':
- specifier: ^4.2.4
- version: 4.2.4
- '@tailwindcss/vite':
- specifier: ^4.2.4
- version: 4.2.4(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
+ '@tanstack/router-plugin':
+ specifier: 1.167.35
+ version: 1.167.35(@tanstack/react-router@1.169.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
+ '@types/markdown-it':
+ specifier: 14.1.2
+ version: 14.1.2
'@types/node':
- specifier: ^25.6.2
+ specifier: 25.6.2
version: 25.6.2
- '@typescript-eslint/eslint-plugin':
- specifier: ^8.59.2
- version: 8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/parser':
- specifier: ^8.59.2
- version: 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
- autoprefixer:
- specifier: ^10.5.0
- version: 10.5.0(postcss@8.5.14)
- eslint:
- specifier: ^10.3.0
- version: 10.3.0(jiti@2.7.0)
- eslint-config-prettier:
- specifier: ^10.1.8
- version: 10.1.8(eslint@10.3.0(jiti@2.7.0))
- eslint-plugin-svelte:
- specifier: ^3.17.1
- version: 3.17.1(eslint@10.3.0(jiti@2.7.0))(svelte@5.55.5(@typescript-eslint/types@8.59.2))
+ '@types/prismjs':
+ specifier: 1.26.5
+ version: 1.26.5
+ '@types/react':
+ specifier: 19.2.14
+ version: 19.2.14
+ '@types/react-dom':
+ specifier: 19.2.3
+ version: 19.2.3(@types/react@19.2.14)
+ '@vitejs/plugin-react':
+ specifier: 6.0.1
+ version: 6.0.1(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
husky:
- specifier: ^9.1.7
+ specifier: 9.1.7
version: 9.1.7
lint-staged:
- specifier: ^17.0.2
- version: 17.0.2
- mdsvex:
- specifier: ^0.12.7
- version: 0.12.7(svelte@5.55.5(@typescript-eslint/types@8.59.2))
- postcss:
- specifier: ^8.5.14
- version: 8.5.14
- prettier:
- specifier: ^3.8.3
- version: 3.8.3
- prettier-plugin-svelte:
- specifier: ^3.5.1
- version: 3.5.1(prettier@3.8.3)(svelte@5.55.5(@typescript-eslint/types@8.59.2))
- prism-themes:
- specifier: ^1.9.0
- version: 1.9.0
- svelte:
- specifier: ^5.55.5
- version: 5.55.5(@typescript-eslint/types@8.59.2)
- svelte-check:
- specifier: ^4.4.8
- version: 4.4.8(picomatch@4.0.4)(svelte@5.55.5(@typescript-eslint/types@8.59.2))(typescript@6.0.3)
- svelte-eslint-parser:
- specifier: ^1.6.1
- version: 1.6.1(svelte@5.55.5(@typescript-eslint/types@8.59.2))
- tailwindcss:
- specifier: ^4.2.4
- version: 4.2.4
- tslib:
- specifier: ^2.8.1
- version: 2.8.1
+ specifier: 17.0.4
+ version: 17.0.4
+ markdown-it:
+ specifier: 14.1.0
+ version: 14.1.0
+ oxfmt:
+ specifier: 0.48.0
+ version: 0.48.0
+ oxlint:
+ specifier: 1.63.0
+ version: 1.63.0
+ prismjs:
+ specifier: 1.30.0
+ version: 1.30.0
typescript:
- specifier: ^6.0.3
+ specifier: 6.0.3
version: 6.0.3
vite:
- specifier: ^8.0.11
+ specifier: 8.0.11
version: 8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)
+ vite-plugin-markdown:
+ specifier: 2.2.0
+ version: 2.2.0(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
packages:
- '@alloc/quick-lru@5.2.0':
- resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
- engines: {node: '>=10'}
+ '@babel/code-frame@7.29.0':
+ resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
+ engines: {node: '>=6.9.0'}
- '@emnapi/core@1.10.0':
- resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
+ '@babel/compat-data@7.29.3':
+ resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==}
+ engines: {node: '>=6.9.0'}
- '@emnapi/runtime@1.10.0':
- resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
+ '@babel/core@7.29.0':
+ resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
+ engines: {node: '>=6.9.0'}
- '@emnapi/wasi-threads@1.2.1':
- resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
+ '@babel/generator@7.29.1':
+ resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.28.6':
+ resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-globals@7.28.0':
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
- '@eslint-community/eslint-utils@4.9.1':
- resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ '@babel/helper-module-imports@7.28.6':
+ resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.28.6':
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-plugin-utils@7.28.6':
+ resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
- '@eslint-community/regexpp@4.12.2':
- resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
- '@eslint/config-array@0.23.5':
- resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ '@babel/helper-validator-option@7.27.1':
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
- '@eslint/config-helpers@0.5.5':
- resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ '@babel/helpers@7.29.2':
+ resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==}
+ engines: {node: '>=6.9.0'}
- '@eslint/core@1.2.1':
- resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ '@babel/parser@7.29.3':
+ resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
- '@eslint/js@10.0.1':
- resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ '@babel/plugin-syntax-jsx@7.28.6':
+ resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
+ engines: {node: '>=6.9.0'}
peerDependencies:
- eslint: ^10.0.0
- peerDependenciesMeta:
- eslint:
- optional: true
+ '@babel/core': ^7.0.0-0
- '@eslint/object-schema@3.0.5':
- resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ '@babel/plugin-syntax-typescript@7.28.6':
+ resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
- '@eslint/plugin-kit@0.7.1':
- resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ '@babel/template@7.28.6':
+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
+ engines: {node: '>=6.9.0'}
- '@humanfs/core@0.19.2':
- resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==}
- engines: {node: '>=18.18.0'}
+ '@babel/traverse@7.29.0':
+ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
+ engines: {node: '>=6.9.0'}
- '@humanfs/node@0.16.8':
- resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==}
- engines: {node: '>=18.18.0'}
+ '@babel/types@7.29.0':
+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
+ engines: {node: '>=6.9.0'}
- '@humanfs/types@0.15.0':
- resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==}
- engines: {node: '>=18.18.0'}
+ '@emnapi/core@1.10.0':
+ resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
+ '@emnapi/runtime@1.10.0':
+ resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
- '@humanwhocodes/retry@0.4.3':
- resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
- engines: {node: '>=18.18'}
+ '@emnapi/wasi-threads@1.2.1':
+ resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -192,21 +189,258 @@ packages:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
- '@opentelemetry/api@1.9.1':
- resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==}
- engines: {node: '>=8.0.0'}
-
'@oxc-project/types@0.128.0':
resolution: {integrity: sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==}
+ '@oxfmt/binding-android-arm-eabi@0.48.0':
+ resolution: {integrity: sha512-uwqk+/KhQvBIpULD8SMM/zAafMRC/+DV/xsEQjkkIsJ/kLmEI/2bxonVowcYTiXqqZ/a0FEW8DPkZY3VvwELDA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@oxfmt/binding-android-arm64@0.48.0':
+ resolution: {integrity: sha512-VUCiKuXK5+McVssgHEJdrcGK7hRJzrRb36zm9/jwzMholyYt4BgXhw5Nm1V1DX6Ce717Zi/1jk432b/tgmQgtQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxfmt/binding-darwin-arm64@0.48.0':
+ resolution: {integrity: sha512-IkKp8rnIyQLW6Jt+6jragCbUVYSayk55lapiprLjIVvt4NczLyO/nwX2GgefLQ5iaBdfS8UEAFgCs/pLO6Cl0w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxfmt/binding-darwin-x64@0.48.0':
+ resolution: {integrity: sha512-+aFuhsGIuvnoOjXyKVHMhPKJZR1kQkAl8QyrKoMlA7yJsSTC3N0Asl53La8TChSHhW8epToQ/Q0nvLmEmfNmLg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxfmt/binding-freebsd-x64@0.48.0':
+ resolution: {integrity: sha512-fbqzQL8FjI9gGnktI7RIo0dksDziTAYBy7xlI7jU7eID5fxLF/25fS4Xj6GydD8Y5oWHL83U4NK160QaOAxtyg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxfmt/binding-linux-arm-gnueabihf@0.48.0':
+ resolution: {integrity: sha512-hn4i0zhAyTiB3ZHjQfYUZkDvrbVkohw1S7pySWxWUoZ87HnkDoTFThj7QTxk40hNPOTUP0vHbPRNamFIv1HBJQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxfmt/binding-linux-arm-musleabihf@0.48.0':
+ resolution: {integrity: sha512-R4WBD9qF3QM9hqgdAa+fBGXmquTvDUujrPQ36t2Sjk8RPOSKGHDeN7l/khr10hqbQaOq9KCgPHG9ubNET/X/RQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxfmt/binding-linux-arm64-gnu@0.48.0':
+ resolution: {integrity: sha512-5bVdwSwlm1M8wbYCorLOxWxUBw/8tBvHYyQNIfwWVPwOJaj5vg1APSGJQVpwJfV5VNE9PSrR91UKEpoNwHhqUA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxfmt/binding-linux-arm64-musl@0.48.0':
+ resolution: {integrity: sha512-vCS3Fk7gFslTqE1lUE2IlroyVV7u/9SmMA/uBqDoshuck2psGWcjW0ePyPZI3rM3+qtf2pDaMVIKMHozraifuw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxfmt/binding-linux-ppc64-gnu@0.48.0':
+ resolution: {integrity: sha512-gKtfFfueUClXDumyoHUbymqRf7prHejOOyzJK0eIJn93GF9JBdFHdo60TM1ZBHxkEwZvjuOgHmKtneKbEOc/Eg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxfmt/binding-linux-riscv64-gnu@0.48.0':
+ resolution: {integrity: sha512-SYt0UhOvZD/UwZz9sXq6J2uAw8o24f5VZpLB2DH01f6MevshmlgakQlZe2lwek2sZJkd07eLu7mZa0g7yeiw7Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxfmt/binding-linux-riscv64-musl@0.48.0':
+ resolution: {integrity: sha512-JLbrwck2AopG4ud/XklZO5N+qxGC7cS7ROvXZVNfx0MCLDDL2kGOLvzuWORkVjnjAM0CMAfIMU2zNBtQbM+4dw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxfmt/binding-linux-s390x-gnu@0.48.0':
+ resolution: {integrity: sha512-mdxt5L8OQLxkQH+JVpdC/lknZNe0lX4hlO3d8+xvw2wToo+iDrid9tiGOd5bmHfUVd5wVhrUry0qlu5vq66NkQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxfmt/binding-linux-x64-gnu@0.48.0':
+ resolution: {integrity: sha512-oEz1BQwMrV7OMEFx/3VPDU3n9TM0AnxpktDYXjEg5i6nTX87wo18wSfBvkl4tzAICdKtoAQAdBIl7Y7hsPlx5w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxfmt/binding-linux-x64-musl@0.48.0':
+ resolution: {integrity: sha512-g2SKTTurP5mWjd8Ecait0erYqmltL4IqW1EwttM25BxM6NiTt4ubobJYMR1uox1V2QgG4UfHH10CGRvWlUixjw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxfmt/binding-openharmony-arm64@0.48.0':
+ resolution: {integrity: sha512-CIg24VgheEpvolHL2gQuax5qcQ602bRMHrJ9g8XsQr3iVj9aSPgopigBKuMqrXsupwkrU+RQCn5cG8PgFntR6w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxfmt/binding-win32-arm64-msvc@0.48.0':
+ resolution: {integrity: sha512-zeaWkcxcEULwkGF3I/HgEvcDPN8buYDrxibBUa/IFh5Vmwyge+KpLO+hEwSovW349H0O/C0Z2kaFmEzEDm00/Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxfmt/binding-win32-ia32-msvc@0.48.0':
+ resolution: {integrity: sha512-yiEKnIAGvx5CyZQOlMaNlZkAbwT7/Quk0j3WLt+PR5hK+qYjPTRRJYDfD77wCBPLvEYAG41v4KG3iL0H+uxoxg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@oxfmt/binding-win32-x64-msvc@0.48.0':
+ resolution: {integrity: sha512-GSD2+7t2UoVMV2NgxXypa4bKewflPMAjYnF0Xw9/ht82ZfafAHhb8STwrEd7wlH2PFogt5zw3WVCxYJaHUdbeQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@oxlint/binding-android-arm-eabi@1.63.0':
+ resolution: {integrity: sha512-A9xLtQt7i0OA1PoB/meog6kikXI9CdwEp7ZwQqmgnpKn3G3b1orvTDy8CQ6T7w1HvDrgWGB78PkFKcWgibcTCg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@oxlint/binding-android-arm64@1.63.0':
+ resolution: {integrity: sha512-SQo+ZMvdR9l3CxZp5W5gFNxSiDxclY6lOzzNpKYLF8asESpm3Pwumx0gER5T7aHLF1/2BAAtLD3DiDkdgy4V1A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxlint/binding-darwin-arm64@1.63.0':
+ resolution: {integrity: sha512-6W82XjJDTmMnjg30427l0dufpnyLoq7wEukKdM6/g2VIybRVuQiBVh43EA4b+UxZ3+tLcKm+Or/pXGNgLCEU8g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxlint/binding-darwin-x64@1.63.0':
+ resolution: {integrity: sha512-CnWd/YCuVG5W1BYkjJEVbJG11o526O9qAwBEQM+nh8K19CRFUkFdROXCyYkGmroHEYQe4vgQ6+lh3550Lp35Xw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxlint/binding-freebsd-x64@1.63.0':
+ resolution: {integrity: sha512-a4eZAqrmtajqcxfdAzC+l7g3PaE3V8hpAYqqeD3fTxLXOMFdK3eNTZrU80n4dDEVm0JXy1aL5PqvqWldBl6zYA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxlint/binding-linux-arm-gnueabihf@1.63.0':
+ resolution: {integrity: sha512-tYUtU9TdbU3uXF5D62g5zXJ13iniFGhXQx5vp9cyEjGdbSAY3VdFBSaldYvyoDmgMZ0ZYuwQP1Y4t2Fhejwa0w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxlint/binding-linux-arm-musleabihf@1.63.0':
+ resolution: {integrity: sha512-I5r3twFf776UZg9dmRo2xbrKt00tTkORXEVe0ctg4vdTkQvJAjiCHxnbAU2HL1AiJ9cqADA76MAliuilsAWnvg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxlint/binding-linux-arm64-gnu@1.63.0':
+ resolution: {integrity: sha512-t7ltUkg6FFh4b564QyGir8xIj/QZbXu8FlcRkcyW9+ztr/mfRHlvUOFd95pJCXi9s/L5DrUeWWgpXRS+V+6igQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxlint/binding-linux-arm64-musl@1.63.0':
+ resolution: {integrity: sha512-Q5mmZy/XWjuYFUuQyYjOvZ5U/JkKEwnpir6hGxhh6HcdP0V/BKxLo8dqkfF/t7r7AguB17dfS/8+go5AQDRR6g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxlint/binding-linux-ppc64-gnu@1.63.0':
+ resolution: {integrity: sha512-uBGtuZ0TzLB4x5wVa82HGNvYqY8buwDhyCnCP0R0gkk9szqVsP0MeTtD5HX7EsEuFIt+aYmYxuxeVxs3nTSwtQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxlint/binding-linux-riscv64-gnu@1.63.0':
+ resolution: {integrity: sha512-h4s6FwxE+9MeA181o0dnDwHP32Y/bG8EiB/vrD6Ib+AMt6haigDc/0bUtI/sLmQDBMJnUfaCmtSSrEAqjtEVrA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxlint/binding-linux-riscv64-musl@1.63.0':
+ resolution: {integrity: sha512-2EaNcCBR8Mcjl5ARtuN3BdEpVkX7KpjSjMGZ/mJMIeaXgTtdz5ytg2VwygMSStA/k0ixfvZFoZOfjDEcouV5vQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxlint/binding-linux-s390x-gnu@1.63.0':
+ resolution: {integrity: sha512-p4hlf/fd7TrYYl3QrWWD0GocqJefwMu3cHQhmi2FvEB/YOvFb5DZN3SMBaPi7B1TM5DeypkEtrVib674q1KKPg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxlint/binding-linux-x64-gnu@1.63.0':
+ resolution: {integrity: sha512-Vgq9rkRVcPcjbcH+ihYTfpeR7vCXfqpd+z5ItTGc0yYUV59L5ceHYN1iV4H9bKGV7Rn5hkVc7x3mSvHegduENA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxlint/binding-linux-x64-musl@1.63.0':
+ resolution: {integrity: sha512-3/Lkq/ncooA61rorrC+ZQed1Bc4VpGj+WnGsp58zmxKgvZ2vhreu+dcVyr3mX8NUpq7mfZ4gDDTou/yrF1Pd7A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxlint/binding-openharmony-arm64@1.63.0':
+ resolution: {integrity: sha512-0/EdD/6hDkx5Mfd769PTjvEM8mZ/6Dfukp1dBCL/2PjlIVGEtYdNZyok6ChqYPsT9JcFnlQnUeQzO0/1L/oC9w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxlint/binding-win32-arm64-msvc@1.63.0':
+ resolution: {integrity: sha512-wb0CUkN8ngwPiRQBjD1Cj0LsHeNvm+Xt6YBHDMtj2DVQVD6Oj8Ri7g6BD+KICf6LaBqZlmzOvy6nF9E/8yyGOg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxlint/binding-win32-ia32-msvc@1.63.0':
+ resolution: {integrity: sha512-BX5iq+ovdNlVYhSn5qPMUIT0uwAwt2lmEnCnzK+Gkhw4DovIvhGb96OFhV8yzQNUnQxn/xGkOR+X+BLrLDNm8w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@oxlint/binding-win32-x64-msvc@1.63.0':
+ resolution: {integrity: sha512-QeN/WELOfsXMeYwxvfgQrl6CbVftYUCZsGXHjXQd5Trccm8+i4gmtxaOui4xbJQaiDlviF8F3yLSBloQUeFsfA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
'@playwright/test@1.59.1':
resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==}
engines: {node: '>=18'}
hasBin: true
- '@polka/url@1.0.0-next.29':
- resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
-
'@rolldown/binding-android-arm64@1.0.0-rc.18':
resolution: {integrity: sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -305,237 +539,127 @@ packages:
'@rolldown/pluginutils@1.0.0-rc.18':
resolution: {integrity: sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==}
- '@standard-schema/spec@1.1.0':
- resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
-
- '@sveltejs/acorn-typescript@1.0.9':
- resolution: {integrity: sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==}
- peerDependencies:
- acorn: ^8.9.0
+ '@rolldown/pluginutils@1.0.0-rc.7':
+ resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==}
- '@sveltejs/adapter-static@3.0.10':
- resolution: {integrity: sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==}
- peerDependencies:
- '@sveltejs/kit': ^2.0.0
+ '@tanstack/history@1.161.6':
+ resolution: {integrity: sha512-NaOGLRrddszbQj9upGat6HG/4TKvXLvu+osAIgfxPYA+eIvYKv8GKDJOrY2D3/U9MRnKfMWD7bU4jeD4xmqyIg==}
+ engines: {node: '>=20.19'}
- '@sveltejs/kit@2.59.1':
- resolution: {integrity: sha512-d8OON70AphLdDesuTIl//M2O6fRTIicX8aYv8vhCiYEhTTI2OboKqey0Hu1A4VFhqwgqtq0vKDmPFGkw8kKmgw==}
- engines: {node: '>=18.13'}
- hasBin: true
+ '@tanstack/react-router-devtools@1.166.13':
+ resolution: {integrity: sha512-6yKRFFJrEEOiGp5RAAuGCYsl81M4XAhJmLcu9PKj+HZle4A3dsP60lwHoqQYWHMK9nKKFkdXR+D8qxzxqtQbEA==}
+ engines: {node: '>=20.19'}
peerDependencies:
- '@opentelemetry/api': ^1.0.0
- '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0
- svelte: ^4.0.0 || ^5.0.0-next.0
- typescript: ^5.3.3 || ^6.0.0
- vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0
+ '@tanstack/react-router': ^1.168.15
+ '@tanstack/router-core': ^1.168.11
+ react: '>=18.0.0 || >=19.0.0'
+ react-dom: '>=18.0.0 || >=19.0.0'
peerDependenciesMeta:
- '@opentelemetry/api':
- optional: true
- typescript:
+ '@tanstack/router-core':
optional: true
- '@sveltejs/vite-plugin-svelte@7.1.2':
- resolution: {integrity: sha512-DrUBA2UXRfDmUX/ZTiEopd3X40yavsJF1FX2RygcuIScHL7o5YX1fMvoYnDhjeJQC4weCOklirpNWlcb2NiSeA==}
- engines: {node: ^20.19 || ^22.12 || >=24}
+ '@tanstack/react-router@1.169.2':
+ resolution: {integrity: sha512-OJM7Kguc7ERnweaNRWsyWgIKcl3z23rD1B4jaxjzd9RGdnzpt2HfrWa9rggbT0Hfzhfo4D2ZmsfoTme035tniQ==}
+ engines: {node: '>=20.19'}
peerDependencies:
- svelte: ^5.46.4
- vite: ^8.0.0-beta.7 || ^8.0.0
-
- '@tailwindcss/node@4.2.4':
- resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==}
-
- '@tailwindcss/oxide-android-arm64@4.2.4':
- resolution: {integrity: sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [android]
-
- '@tailwindcss/oxide-darwin-arm64@4.2.4':
- resolution: {integrity: sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [darwin]
-
- '@tailwindcss/oxide-darwin-x64@4.2.4':
- resolution: {integrity: sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [darwin]
-
- '@tailwindcss/oxide-freebsd-x64@4.2.4':
- resolution: {integrity: sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [freebsd]
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4':
- resolution: {integrity: sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA==}
- engines: {node: '>= 20'}
- cpu: [arm]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.2.4':
- resolution: {integrity: sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
+ react: '>=18.0.0 || >=19.0.0'
+ react-dom: '>=18.0.0 || >=19.0.0'
- '@tailwindcss/oxide-linux-arm64-musl@4.2.4':
- resolution: {integrity: sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
+ '@tanstack/react-store@0.9.3':
+ resolution: {integrity: sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@tailwindcss/oxide-linux-x64-gnu@4.2.4':
- resolution: {integrity: sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
+ '@tanstack/router-core@1.169.2':
+ resolution: {integrity: sha512-5sm0DJF1A7Mz+9gy4Gz/lLovNailK3yot4vYvz9MkBUPw26uLnhQiR8hSCYxucjE0wD6Mdlc5l+Z0/XTlZ7xHw==}
+ engines: {node: '>=20.19'}
- '@tailwindcss/oxide-linux-x64-musl@4.2.4':
- resolution: {integrity: sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [linux]
- libc: [musl]
+ '@tanstack/router-devtools-core@1.167.3':
+ resolution: {integrity: sha512-fJ1VMhyQgnoashTrP763c2HRc9kofgF61L7Jb3F6eTHAmCKtGVx8BRtiFt37sr3U0P0jmaaiiSPGP6nT5JtVNg==}
+ engines: {node: '>=20.19'}
+ peerDependencies:
+ '@tanstack/router-core': ^1.168.11
+ csstype: ^3.0.10
+ peerDependenciesMeta:
+ csstype:
+ optional: true
- '@tailwindcss/oxide-wasm32-wasi@4.2.4':
- resolution: {integrity: sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
- bundledDependencies:
- - '@napi-rs/wasm-runtime'
- - '@emnapi/core'
- - '@emnapi/runtime'
- - '@tybys/wasm-util'
- - '@emnapi/wasi-threads'
- - tslib
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.2.4':
- resolution: {integrity: sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ==}
- engines: {node: '>= 20'}
- cpu: [arm64]
- os: [win32]
+ '@tanstack/router-generator@1.166.42':
+ resolution: {integrity: sha512-2qBWC0t78r6b3vI+AbnvCZcFAvbYBDlLuWZrTjQbcjUmwG3qyeQp983tJyDuj9wb5//adG1tgAGXZkJ3aDwdBg==}
+ engines: {node: '>=20.19'}
- '@tailwindcss/oxide-win32-x64-msvc@4.2.4':
- resolution: {integrity: sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw==}
- engines: {node: '>= 20'}
- cpu: [x64]
- os: [win32]
+ '@tanstack/router-plugin@1.167.35':
+ resolution: {integrity: sha512-UAScU5VAzLYVY4FML/Cbc5S5TucT4I8Ata05yozGOe4ZfepTKRffA5xWLtD2N+ov5svdv0KTX/kqlZnYPe28mA==}
+ engines: {node: '>=20.19'}
+ peerDependencies:
+ '@rsbuild/core': '>=1.0.2 || ^2.0.0'
+ '@tanstack/react-router': ^1.169.2
+ vite: '>=5.0.0 || >=6.0.0 || >=7.0.0 || >=8.0.0'
+ vite-plugin-solid: ^2.11.10 || ^3.0.0-0
+ webpack: '>=5.92.0'
+ peerDependenciesMeta:
+ '@rsbuild/core':
+ optional: true
+ '@tanstack/react-router':
+ optional: true
+ vite:
+ optional: true
+ vite-plugin-solid:
+ optional: true
+ webpack:
+ optional: true
- '@tailwindcss/oxide@4.2.4':
- resolution: {integrity: sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q==}
- engines: {node: '>= 20'}
+ '@tanstack/router-utils@1.161.8':
+ resolution: {integrity: sha512-xyiLWEKjfBAVhauDSSjXxyf7s8elU6SM+V050sbkofvGmIIvkwPFtDsX7Gvwh14kBd6iCwAT+RiPvXTxAptY0Q==}
+ engines: {node: '>=20.19'}
- '@tailwindcss/postcss@4.2.4':
- resolution: {integrity: sha512-wgAVj6nUWAolAu8YFvzT2cTBIElWHkjZwFYovF+xsqKsW2ADxM/X2opxj5NsF/qVccAOjRNe8X2IdPzMsWyHTg==}
+ '@tanstack/store@0.9.3':
+ resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==}
- '@tailwindcss/vite@4.2.4':
- resolution: {integrity: sha512-pCvohwOCspk3ZFn6eJzrrX3g4n2JY73H6MmYC87XfGPyTty4YsCjYTMArRZm/zOI8dIt3+EcrLHAFPe5A4bgtw==}
- peerDependencies:
- vite: ^5.2.0 || ^6 || ^7 || ^8
+ '@tanstack/virtual-file-routes@1.161.7':
+ resolution: {integrity: sha512-olW33+Cn+bsCsZKPwEGhlkqS6w3M2slFv11JIobdnCFKMLG97oAI2kWKdx5/zsywTL8flpnoIgaZZPlQTFYhdQ==}
+ engines: {node: '>=20.19'}
+ hasBin: true
'@tybys/wasm-util@0.10.2':
resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
- '@types/cookie@0.6.0':
- resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
-
- '@types/esrecurse@4.3.1':
- resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==}
-
- '@types/estree@1.0.9':
- resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+ '@types/linkify-it@5.0.0':
+ resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ '@types/markdown-it@14.1.2':
+ resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
- '@types/mdast@4.0.4':
- resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+ '@types/mdurl@2.0.0':
+ resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
'@types/node@25.6.2':
resolution: {integrity: sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==}
- '@types/trusted-types@2.0.7':
- resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
-
- '@types/unist@2.0.11':
- resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
-
- '@typescript-eslint/eslint-plugin@8.59.2':
- resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- '@typescript-eslint/parser': ^8.59.2
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/parser@8.59.2':
- resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/project-service@8.59.2':
- resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/scope-manager@8.59.2':
- resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/tsconfig-utils@8.59.2':
- resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/type-utils@8.59.2':
- resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
-
- '@typescript-eslint/types@8.59.2':
- resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@typescript-eslint/typescript-estree@8.59.2':
- resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- typescript: '>=4.8.4 <6.1.0'
+ '@types/prismjs@1.26.5':
+ resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==}
- '@typescript-eslint/utils@8.59.2':
- resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@types/react-dom@19.2.3':
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
peerDependencies:
- eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
- typescript: '>=4.8.4 <6.1.0'
+ '@types/react': ^19.2.0
- '@typescript-eslint/visitor-keys@8.59.2':
- resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@types/react@19.2.14':
+ resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==}
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ '@vitejs/plugin-react@6.0.1':
+ resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn@8.16.0:
- resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- ajv@6.15.0:
- resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
+ '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0
+ babel-plugin-react-compiler: ^1.0.0
+ vite: ^8.0.0
+ peerDependenciesMeta:
+ '@rolldown/plugin-babel':
+ optional: true
+ babel-plugin-react-compiler:
+ optional: true
ansi-escapes@7.3.0:
resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==}
@@ -549,33 +673,35 @@ packages:
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
- aria-query@5.3.1:
- resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==}
- engines: {node: '>= 0.4'}
+ ansis@4.2.0:
+ resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==}
+ engines: {node: '>=14'}
- autoprefixer@10.5.0:
- resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==}
- engines: {node: ^10 || ^12 || >=14}
- hasBin: true
- peerDependencies:
- postcss: ^8.1.0
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
- axobject-query@4.1.0:
- resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
- engines: {node: '>= 0.4'}
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- balanced-match@4.0.4:
- resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
- engines: {node: 18 || 20 || >=22}
+ babel-dead-code-elimination@1.0.12:
+ resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==}
- baseline-browser-mapping@2.10.27:
- resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==}
+ baseline-browser-mapping@2.10.29:
+ resolution: {integrity: sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==}
engines: {node: '>=6.0.0'}
hasBin: true
- brace-expansion@5.0.5:
- resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==}
- engines: {node: 18 || 20 || >=22}
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
browserslist@4.28.2:
resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==}
@@ -585,9 +711,9 @@ packages:
caniuse-lite@1.0.30001792:
resolution: {integrity: sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==}
- chokidar@4.0.3:
- resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
- engines: {node: '>= 14.16.0'}
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
cli-cursor@5.0.0:
resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
@@ -601,18 +727,14 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
- cookie@0.6.0:
- resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
- engines: {node: '>= 0.6'}
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
+ cookie-es@3.1.1:
+ resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==}
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
@@ -623,135 +745,59 @@ packages:
supports-color:
optional: true
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
- deepmerge@4.3.1:
- resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
- engines: {node: '>=0.10.0'}
-
detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
- devalue@5.8.0:
- resolution: {integrity: sha512-2zA9pFEsnp7vWBZbXF5JAgAq0fsUIt/1XPbRiAmRV3lp/2C3upzH+sADiyy66aFCihoLEsrQHxNM5w1gIDfsBg==}
-
- electron-to-chromium@1.5.352:
- resolution: {integrity: sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg==}
-
- emoji-regex@10.6.0:
- resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
-
- enhanced-resolve@5.21.0:
- resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==}
- engines: {node: '>=10.13.0'}
-
- environment@1.1.0:
- resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
- engines: {node: '>=18'}
-
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
+ diff@8.0.4:
+ resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==}
+ engines: {node: '>=0.3.1'}
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
+ dom-serializer@1.4.1:
+ resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
- eslint-config-prettier@10.1.8:
- resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
+ domelementtype@2.3.0:
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
- eslint-plugin-svelte@3.17.1:
- resolution: {integrity: sha512-NyiXHtS3Ni7e532RBwS9OXlMKDIrENg3gY+/+ODjZzQx2xhU3NlJ+nIl1a93iUUQeiJL3lS8KLmY+W8hklzweQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- peerDependencies:
- eslint: ^8.57.1 || ^9.0.0 || ^10.0.0
- svelte: ^3.37.0 || ^4.0.0 || ^5.0.0
- peerDependenciesMeta:
- svelte:
- optional: true
-
- eslint-scope@8.4.0:
- resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- eslint-scope@9.1.2:
- resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
-
- eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ domhandler@4.3.1:
+ resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+ engines: {node: '>= 4'}
- eslint-visitor-keys@4.2.1:
- resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ domutils@2.8.0:
+ resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
- eslint-visitor-keys@5.0.1:
- resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ electron-to-chromium@1.5.353:
+ resolution: {integrity: sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==}
- eslint@10.3.0:
- resolution: {integrity: sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
- hasBin: true
- peerDependencies:
- jiti: '*'
- peerDependenciesMeta:
- jiti:
- optional: true
-
- esm-env@1.2.2:
- resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
+ emoji-regex@10.6.0:
+ resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
- espree@10.4.0:
- resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ entities@2.1.0:
+ resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
- espree@11.2.0:
- resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==}
- engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+ entities@2.2.0:
+ resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
- esquery@1.7.0:
- resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
- engines: {node: '>=0.10'}
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
- esrap@2.2.6:
- resolution: {integrity: sha512-WN0clHt0a4mzC780UBVVBpsj4vSSjOFNRd2WjYtduB9HeKxm1sjHMNUwLEHVjI3FdCQD/Hurgz9ftbKEzP79Ow==}
- peerDependencies:
- '@typescript-eslint/types': ^8.2.0
- peerDependenciesMeta:
- '@typescript-eslint/types':
- optional: true
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
+ environment@1.1.0:
+ resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
+ engines: {node: '>=18'}
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
+ esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
eventemitter3@5.0.4:
resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
-
- fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
-
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
@@ -761,23 +807,12 @@ packages:
picomatch:
optional: true
- file-entry-cache@8.0.0:
- resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
- engines: {node: '>=16.0.0'}
-
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
-
- flatted@3.4.2:
- resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
- fraction.js@5.3.4:
- resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
+ front-matter@4.0.2:
+ resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==}
fsevents@2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
@@ -789,37 +824,34 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
- get-east-asian-width@1.5.0:
- resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==}
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-east-asian-width@1.6.0:
+ resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
engines: {node: '>=18'}
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
- globals@16.5.0:
- resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==}
- engines: {node: '>=18'}
+ goober@2.1.18:
+ resolution: {integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==}
+ peerDependencies:
+ csstype: ^3.0.10
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+ htmlparser2@6.1.0:
+ resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
husky@9.1.7:
resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==}
engines: {node: '>=18'}
hasBin: true
- ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
-
- ignore@7.0.5:
- resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
- engines: {node: '>= 4'}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
@@ -833,38 +865,34 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
- is-reference@3.0.3:
- resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isbot@5.1.40:
+ resolution: {integrity: sha512-yNeeynhhtIVRBk12tBV4eHNxwB42HzR4Q3Ea7vCOiJhImGaAIdIMrbJtacQlBizGLjUPw+akkFI5Dn9T70XoVQ==}
+ engines: {node: '>=18'}
jiti@2.7.0:
resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
hasBin: true
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
-
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ js-yaml@3.14.2:
+ resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==}
+ hasBin: true
- kleur@4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
+ hasBin: true
- known-css-properties@0.37.0:
- resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==}
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
lightningcss-android-arm64@1.32.0:
resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
@@ -940,12 +968,14 @@ packages:
resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
engines: {node: '>= 12.0.0'}
- lilconfig@2.1.0:
- resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
- engines: {node: '>=10'}
+ linkify-it@3.0.3:
+ resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
+
+ linkify-it@5.0.0:
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
- lint-staged@17.0.2:
- resolution: {integrity: sha512-Rbr6rdmbCn1fIDHBZpn0madg0hEkdlh+QwajnL3Qq0ZUq/icAJfLGj9BVBajAXi7657ZzKQ7kobGP9S5XOHYRw==}
+ lint-staged@17.0.4:
+ resolution: {integrity: sha512-+rU9lSUyVOZ/hDUmRLVGzyS2v73cDdQjX+XQz1AaOdIE4RysLq0HoPW2HrrgeNCLklkhi904VBU1bmgWLHVnkA==}
engines: {node: '>=22.22.1'}
hasBin: true
@@ -953,40 +983,33 @@ packages:
resolution: {integrity: sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==}
engines: {node: '>=22.13.0'}
- locate-character@3.0.0:
- resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
-
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
log-update@6.1.0:
resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
engines: {node: '>=18'}
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- mdsvex@0.12.7:
- resolution: {integrity: sha512-gx4bReLCUvq+MPErHXYeyX+TEq1hsS2KfiZtEOMNTcbibSouFy8AHc5h04KbGCl+g5tLuo4/lbgRVYRnc7bJZw==}
- peerDependencies:
- svelte: ^3.56.0 || ^4.0.0 || ^5.0.0-next.120
+ markdown-it@12.3.2:
+ resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
+ hasBin: true
- mimic-function@5.0.1:
- resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
- engines: {node: '>=18'}
+ markdown-it@14.1.0:
+ resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
+ hasBin: true
- minimatch@10.2.5:
- resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
- engines: {node: 18 || 20 || >=22}
+ mdurl@1.0.1:
+ resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
- mri@1.2.0:
- resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
- engines: {node: '>=4'}
+ mdurl@2.0.0:
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
- mrmime@2.0.1:
- resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
- engines: {node: '>=10'}
+ mimic-function@5.0.1:
+ resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
+ engines: {node: '>=18'}
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -996,42 +1019,42 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
node-releases@2.0.38:
resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==}
- obug@2.1.1:
- resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
onetime@7.0.0:
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
engines: {node: '>=18'}
- optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
-
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
+ oxfmt@0.48.0:
+ resolution: {integrity: sha512-AVaLh+7XeGx+R1zfFV+f6VV61nT2MWVJXVUDhbTm5LBWGyNt64xAyh3NYYyjeY2WykNt9AvqSQLPHcbWquYF9g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
+ oxlint@1.63.0:
+ resolution: {integrity: sha512-9TGXetdjgIHOJ9OiReomP7nnrMkV9HxC1xM2ramJSLQpzxjsAJtQwa4wqkJN2f/uCrqZuJseFuSlWDdvcruveg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ oxlint-tsgolint: '>=0.22.1'
+ peerDependenciesMeta:
+ oxlint-tsgolint:
+ optional: true
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+ picomatch@2.3.2:
+ resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
+ engines: {node: '>=8.6'}
+
picomatch@4.0.4:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
@@ -1046,73 +1069,35 @@ packages:
engines: {node: '>=18'}
hasBin: true
- postcss-load-config@3.1.4:
- resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
- engines: {node: '>= 10'}
- peerDependencies:
- postcss: '>=8.0.9'
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- postcss:
- optional: true
- ts-node:
- optional: true
-
- postcss-safe-parser@7.0.1:
- resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==}
- engines: {node: '>=18.0'}
- peerDependencies:
- postcss: ^8.4.31
-
- postcss-scss@4.0.9:
- resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.4.29
-
- postcss-selector-parser@7.1.1:
- resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
- engines: {node: '>=4'}
-
- postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
-
postcss@8.5.14:
resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
engines: {node: ^10 || ^12 || >=14}
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- prettier-plugin-svelte@3.5.1:
- resolution: {integrity: sha512-65+fr5+cgIKWKiqM1Doum4uX6bY8iFCdztvvp2RcF+AJoieaw9kJOFMNcJo/bkmKYsxFaM9OsVZK/gWauG/5mg==}
- peerDependencies:
- prettier: ^3.0.0
- svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
-
prettier@3.8.3:
resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==}
engines: {node: '>=14'}
hasBin: true
- prism-svelte@0.4.7:
- resolution: {integrity: sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==}
-
- prism-themes@1.9.0:
- resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==}
-
prismjs@1.30.0:
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
engines: {node: '>=6'}
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ punycode.js@2.3.1:
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
engines: {node: '>=6'}
- readdirp@4.1.2:
- resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
- engines: {node: '>= 14.18.0'}
+ react-dom@19.2.6:
+ resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==}
+ peerDependencies:
+ react: ^19.2.6
+
+ react@19.2.6:
+ resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==}
+ engines: {node: '>=0.10.0'}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
restore-cursor@5.1.0:
resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
@@ -1126,34 +1111,27 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- sade@1.8.1:
- resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
- engines: {node: '>=6'}
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
- semver@7.7.4:
- resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
- engines: {node: '>=10'}
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
- set-cookie-parser@3.1.0:
- resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
+ seroval-plugins@1.5.4:
+ resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ seroval: ^1.0
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
+ seroval@1.5.4:
+ resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==}
+ engines: {node: '>=10'}
signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
- sirv@3.0.2:
- resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
- engines: {node: '>=18'}
-
slice-ansi@7.1.2:
resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==}
engines: {node: '>=18'}
@@ -1166,6 +1144,9 @@ packages:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
+ sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
string-argv@0.3.2:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
engines: {node: '>=0.6.19'}
@@ -1182,34 +1163,6 @@ packages:
resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
engines: {node: '>=12'}
- svelte-check@4.4.8:
- resolution: {integrity: sha512-67adfgBox5eNSNIvIIwgFizKGdcRrGpiMoNO2obHcYuLz7iTa8Xgm/NGU3ntMFnNm8K1grFOIG6HhMLX/vcN8w==}
- engines: {node: '>= 18.0.0'}
- hasBin: true
- peerDependencies:
- svelte: ^4.0.0 || ^5.0.0-next.0
- typescript: '>=5.0.0'
-
- svelte-eslint-parser@1.6.1:
- resolution: {integrity: sha512-hhvSH6kRj46UzrBVO5TaotD+Iuvruj5ccKBcO4wAhVcPTLmIc/c32D8UllBTYO0on4LzYuM0rNzf1lM/gBlkSQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.33.0}
- peerDependencies:
- svelte: ^3.37.0 || ^4.0.0 || ^5.0.0
- peerDependenciesMeta:
- svelte:
- optional: true
-
- svelte@5.55.5:
- resolution: {integrity: sha512-2uCs/LZ9us+AktdzYJM8OcxQ8qnPS1kpaO7syGT/MgO+6Qr1Ybl+TqPq+97u7PHqmmMlye5ZkoyXONy5mjjAbw==}
- engines: {node: '>=18'}
-
- tailwindcss@4.2.4:
- resolution: {integrity: sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA==}
-
- tapable@2.3.3:
- resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
- engines: {node: '>=6'}
-
tinyexec@1.1.2:
resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==}
engines: {node: '>=18'}
@@ -1218,42 +1171,34 @@ packages:
resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
engines: {node: '>=12.0.0'}
- totalist@3.0.1:
- resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
- engines: {node: '>=6'}
+ tinypool@2.1.0:
+ resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==}
+ engines: {node: ^20.0.0 || >=22.0.0}
- ts-api-utils@2.5.0:
- resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
- engines: {node: '>=18.12'}
- peerDependencies:
- typescript: '>=4.8.4'
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
typescript@6.0.3:
resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
engines: {node: '>=14.17'}
hasBin: true
- undici-types@7.19.2:
- resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==}
+ uc.micro@1.0.6:
+ resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
- unist-util-is@4.1.0:
- resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==}
+ uc.micro@2.1.0:
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
- unist-util-stringify-position@2.0.3:
- resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
-
- unist-util-visit-parents@3.1.1:
- resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==}
+ undici-types@7.19.2:
+ resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==}
- unist-util-visit@2.0.3:
- resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==}
+ unplugin@3.0.0:
+ resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
update-browserslist-db@1.2.3:
resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
@@ -1261,14 +1206,15 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ use-sync-external-store@1.6.0:
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- vfile-message@2.0.4:
- resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==}
+ vite-plugin-markdown@2.2.0:
+ resolution: {integrity: sha512-eH2tXMZcx3EHb5okd+/0VIyoR8Gp9pGe24UXitOOcGkzObbJ1vl48aGOAbakoT88FBdzC8MXNkMfBIB9VK0Ndg==}
+ peerDependencies:
+ vite: '>= 2.0.0'
vite@8.0.11:
resolution: {integrity: sha512-Jz1mxtUBR5xTT65VOdJZUUeoyLtqljmFkiUXhPTLZka3RDc9vpi/xXkyrnsdRcm2lIi3l3GPMnAidTsEGIj3Ow==}
@@ -1313,22 +1259,8 @@ packages:
yaml:
optional: true
- vitefu@1.1.3:
- resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==}
- peerDependencies:
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
- peerDependenciesMeta:
- vite:
- optional: true
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
+ webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
wrap-ansi@10.0.0:
resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==}
@@ -1338,91 +1270,146 @@ packages:
resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}
engines: {node: '>=18'}
- yaml@1.10.3:
- resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==}
- engines: {node: '>= 6'}
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
yaml@2.8.4:
resolution: {integrity: sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==}
engines: {node: '>= 14.6'}
hasBin: true
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
- zimmerframe@1.1.4:
- resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
+ zod@3.25.76:
+ resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
snapshots:
- '@alloc/quick-lru@5.2.0': {}
-
- '@emnapi/core@1.10.0':
+ '@babel/code-frame@7.29.0':
dependencies:
- '@emnapi/wasi-threads': 1.2.1
- tslib: 2.8.1
- optional: true
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
- '@emnapi/runtime@1.10.0':
+ '@babel/compat-data@7.29.3': {}
+
+ '@babel/core@7.29.0':
dependencies:
- tslib: 2.8.1
- optional: true
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helpers': 7.29.2
+ '@babel/parser': 7.29.3
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
- '@emnapi/wasi-threads@1.2.1':
+ '@babel/generator@7.29.1':
dependencies:
- tslib: 2.8.1
- optional: true
+ '@babel/parser': 7.29.3
+ '@babel/types': 7.29.0
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
- '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0(jiti@2.7.0))':
+ '@babel/helper-compilation-targets@7.28.6':
dependencies:
- eslint: 10.3.0(jiti@2.7.0)
- eslint-visitor-keys: 3.4.3
+ '@babel/compat-data': 7.29.3
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.28.2
+ lru-cache: 5.1.1
+ semver: 6.3.1
- '@eslint-community/regexpp@4.12.2': {}
+ '@babel/helper-globals@7.28.0': {}
- '@eslint/config-array@0.23.5':
+ '@babel/helper-module-imports@7.28.6':
dependencies:
- '@eslint/object-schema': 3.0.5
- debug: 4.4.3
- minimatch: 10.2.5
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/helper-validator-identifier': 7.28.5
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
- '@eslint/config-helpers@0.5.5':
+ '@babel/helper-plugin-utils@7.28.6': {}
+
+ '@babel/helper-string-parser@7.27.1': {}
+
+ '@babel/helper-validator-identifier@7.28.5': {}
+
+ '@babel/helper-validator-option@7.27.1': {}
+
+ '@babel/helpers@7.29.2':
dependencies:
- '@eslint/core': 1.2.1
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
- '@eslint/core@1.2.1':
+ '@babel/parser@7.29.3':
dependencies:
- '@types/json-schema': 7.0.15
+ '@babel/types': 7.29.0
- '@eslint/js@10.0.1(eslint@10.3.0(jiti@2.7.0))':
- optionalDependencies:
- eslint: 10.3.0(jiti@2.7.0)
+ '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@eslint/object-schema@3.0.5': {}
+ '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@eslint/plugin-kit@0.7.1':
+ '@babel/template@7.28.6':
dependencies:
- '@eslint/core': 1.2.1
- levn: 0.4.1
+ '@babel/code-frame': 7.29.0
+ '@babel/parser': 7.29.3
+ '@babel/types': 7.29.0
- '@humanfs/core@0.19.2':
+ '@babel/traverse@7.29.0':
dependencies:
- '@humanfs/types': 0.15.0
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.29.3
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
- '@humanfs/node@0.16.8':
+ '@babel/types@7.29.0':
dependencies:
- '@humanfs/core': 0.19.2
- '@humanfs/types': 0.15.0
- '@humanwhocodes/retry': 0.4.3
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
- '@humanfs/types@0.15.0': {}
+ '@emnapi/core@1.10.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.1
+ tslib: 2.8.1
+ optional: true
- '@humanwhocodes/module-importer@1.0.1': {}
+ '@emnapi/runtime@1.10.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
- '@humanwhocodes/retry@0.4.3': {}
+ '@emnapi/wasi-threads@1.2.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
'@jridgewell/gen-mapping@0.3.13':
dependencies:
@@ -1443,23 +1430,133 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
- '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
- dependencies:
- '@emnapi/core': 1.10.0
- '@emnapi/runtime': 1.10.0
- '@tybys/wasm-util': 0.10.2
+ '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@tybys/wasm-util': 0.10.2
+ optional: true
+
+ '@oxc-project/types@0.128.0': {}
+
+ '@oxfmt/binding-android-arm-eabi@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-android-arm64@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-darwin-arm64@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-darwin-x64@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-freebsd-x64@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-arm-gnueabihf@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-arm-musleabihf@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-arm64-gnu@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-arm64-musl@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-ppc64-gnu@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-riscv64-gnu@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-riscv64-musl@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-s390x-gnu@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-x64-gnu@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-linux-x64-musl@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-openharmony-arm64@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-win32-arm64-msvc@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-win32-ia32-msvc@0.48.0':
+ optional: true
+
+ '@oxfmt/binding-win32-x64-msvc@0.48.0':
+ optional: true
+
+ '@oxlint/binding-android-arm-eabi@1.63.0':
+ optional: true
+
+ '@oxlint/binding-android-arm64@1.63.0':
+ optional: true
+
+ '@oxlint/binding-darwin-arm64@1.63.0':
+ optional: true
+
+ '@oxlint/binding-darwin-x64@1.63.0':
+ optional: true
+
+ '@oxlint/binding-freebsd-x64@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-arm-gnueabihf@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-arm-musleabihf@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-arm64-gnu@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-arm64-musl@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-ppc64-gnu@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-riscv64-gnu@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-riscv64-musl@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-s390x-gnu@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-x64-gnu@1.63.0':
+ optional: true
+
+ '@oxlint/binding-linux-x64-musl@1.63.0':
optional: true
- '@opentelemetry/api@1.9.1': {}
+ '@oxlint/binding-openharmony-arm64@1.63.0':
+ optional: true
- '@oxc-project/types@0.128.0': {}
+ '@oxlint/binding-win32-arm64-msvc@1.63.0':
+ optional: true
+
+ '@oxlint/binding-win32-ia32-msvc@1.63.0':
+ optional: true
+
+ '@oxlint/binding-win32-x64-msvc@1.63.0':
+ optional: true
'@playwright/test@1.59.1':
dependencies:
playwright: 1.59.1
- '@polka/url@1.0.0-next.29': {}
-
'@rolldown/binding-android-arm64@1.0.0-rc.18':
optional: true
@@ -1511,250 +1608,136 @@ snapshots:
'@rolldown/pluginutils@1.0.0-rc.18': {}
- '@standard-schema/spec@1.1.0': {}
-
- '@sveltejs/acorn-typescript@1.0.9(acorn@8.16.0)':
- dependencies:
- acorn: 8.16.0
-
- '@sveltejs/adapter-static@3.0.10(@sveltejs/kit@2.59.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.55.5(@typescript-eslint/types@8.59.2))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)))(svelte@5.55.5(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)))':
- dependencies:
- '@sveltejs/kit': 2.59.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.55.5(@typescript-eslint/types@8.59.2))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)))(svelte@5.55.5(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
-
- '@sveltejs/kit@2.59.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.55.5(@typescript-eslint/types@8.59.2))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)))(svelte@5.55.5(@typescript-eslint/types@8.59.2))(typescript@6.0.3)(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))':
- dependencies:
- '@standard-schema/spec': 1.1.0
- '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0)
- '@sveltejs/vite-plugin-svelte': 7.1.2(svelte@5.55.5(@typescript-eslint/types@8.59.2))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
- '@types/cookie': 0.6.0
- acorn: 8.16.0
- cookie: 0.6.0
- devalue: 5.8.0
- esm-env: 1.2.2
- kleur: 4.1.5
- magic-string: 0.30.21
- mrmime: 2.0.1
- set-cookie-parser: 3.1.0
- sirv: 3.0.2
- svelte: 5.55.5(@typescript-eslint/types@8.59.2)
- vite: 8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)
- optionalDependencies:
- '@opentelemetry/api': 1.9.1
- typescript: 6.0.3
+ '@rolldown/pluginutils@1.0.0-rc.7': {}
- '@sveltejs/vite-plugin-svelte@7.1.2(svelte@5.55.5(@typescript-eslint/types@8.59.2))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))':
- dependencies:
- deepmerge: 4.3.1
- magic-string: 0.30.21
- obug: 2.1.1
- svelte: 5.55.5(@typescript-eslint/types@8.59.2)
- vite: 8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)
- vitefu: 1.1.3(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))
+ '@tanstack/history@1.161.6': {}
- '@tailwindcss/node@4.2.4':
+ '@tanstack/react-router-devtools@1.166.13(@tanstack/react-router@1.169.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@tanstack/router-core@1.169.2)(csstype@3.2.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
- '@jridgewell/remapping': 2.3.5
- enhanced-resolve: 5.21.0
- jiti: 2.7.0
- lightningcss: 1.32.0
- magic-string: 0.30.21
- source-map-js: 1.2.1
- tailwindcss: 4.2.4
-
- '@tailwindcss/oxide-android-arm64@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-darwin-arm64@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-darwin-x64@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-freebsd-x64@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-musl@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-gnu@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-musl@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-wasm32-wasi@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.2.4':
- optional: true
-
- '@tailwindcss/oxide-win32-x64-msvc@4.2.4':
- optional: true
-
- '@tailwindcss/oxide@4.2.4':
+ '@tanstack/react-router': 1.169.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@tanstack/router-devtools-core': 1.167.3(@tanstack/router-core@1.169.2)(csstype@3.2.3)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
optionalDependencies:
- '@tailwindcss/oxide-android-arm64': 4.2.4
- '@tailwindcss/oxide-darwin-arm64': 4.2.4
- '@tailwindcss/oxide-darwin-x64': 4.2.4
- '@tailwindcss/oxide-freebsd-x64': 4.2.4
- '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.4
- '@tailwindcss/oxide-linux-arm64-gnu': 4.2.4
- '@tailwindcss/oxide-linux-arm64-musl': 4.2.4
- '@tailwindcss/oxide-linux-x64-gnu': 4.2.4
- '@tailwindcss/oxide-linux-x64-musl': 4.2.4
- '@tailwindcss/oxide-wasm32-wasi': 4.2.4
- '@tailwindcss/oxide-win32-arm64-msvc': 4.2.4
- '@tailwindcss/oxide-win32-x64-msvc': 4.2.4
-
- '@tailwindcss/postcss@4.2.4':
- dependencies:
- '@alloc/quick-lru': 5.2.0
- '@tailwindcss/node': 4.2.4
- '@tailwindcss/oxide': 4.2.4
- postcss: 8.5.14
- tailwindcss: 4.2.4
+ '@tanstack/router-core': 1.169.2
+ transitivePeerDependencies:
+ - csstype
- '@tailwindcss/vite@4.2.4(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))':
+ '@tanstack/react-router@1.169.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
- '@tailwindcss/node': 4.2.4
- '@tailwindcss/oxide': 4.2.4
- tailwindcss: 4.2.4
- vite: 8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)
+ '@tanstack/history': 1.161.6
+ '@tanstack/react-store': 0.9.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@tanstack/router-core': 1.169.2
+ isbot: 5.1.40
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
- '@tybys/wasm-util@0.10.2':
+ '@tanstack/react-store@0.9.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
- tslib: 2.8.1
- optional: true
-
- '@types/cookie@0.6.0': {}
-
- '@types/esrecurse@4.3.1': {}
-
- '@types/estree@1.0.9': {}
+ '@tanstack/store': 0.9.3
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ use-sync-external-store: 1.6.0(react@19.2.6)
- '@types/json-schema@7.0.15': {}
-
- '@types/mdast@4.0.4':
+ '@tanstack/router-core@1.169.2':
dependencies:
- '@types/unist': 2.0.11
+ '@tanstack/history': 1.161.6
+ cookie-es: 3.1.1
+ seroval: 1.5.4
+ seroval-plugins: 1.5.4(seroval@1.5.4)
- '@types/node@25.6.2':
+ '@tanstack/router-devtools-core@1.167.3(@tanstack/router-core@1.169.2)(csstype@3.2.3)':
dependencies:
- undici-types: 7.19.2
-
- '@types/trusted-types@2.0.7': {}
-
- '@types/unist@2.0.11': {}
+ '@tanstack/router-core': 1.169.2
+ clsx: 2.1.1
+ goober: 2.1.18(csstype@3.2.3)
+ optionalDependencies:
+ csstype: 3.2.3
- '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)':
+ '@tanstack/router-generator@1.166.42':
dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/scope-manager': 8.59.2
- '@typescript-eslint/type-utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
- '@typescript-eslint/visitor-keys': 8.59.2
- eslint: 10.3.0(jiti@2.7.0)
- ignore: 7.0.5
- natural-compare: 1.4.0
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
+ '@babel/types': 7.29.0
+ '@tanstack/router-core': 1.169.2
+ '@tanstack/router-utils': 1.161.8
+ '@tanstack/virtual-file-routes': 1.161.7
+ jiti: 2.7.0
+ magic-string: 0.30.21
+ prettier: 3.8.3
+ zod: 3.25.76
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.59.2
- '@typescript-eslint/types': 8.59.2
- '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3)
- '@typescript-eslint/visitor-keys': 8.59.2
- debug: 4.4.3
- eslint: 10.3.0(jiti@2.7.0)
- typescript: 6.0.3
+ '@tanstack/router-plugin@1.167.35(@tanstack/react-router@1.169.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))':
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0)
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ '@tanstack/router-core': 1.169.2
+ '@tanstack/router-generator': 1.166.42
+ '@tanstack/router-utils': 1.161.8
+ '@tanstack/virtual-file-routes': 1.161.7
+ chokidar: 3.6.0
+ unplugin: 3.0.0
+ zod: 3.25.76
+ optionalDependencies:
+ '@tanstack/react-router': 1.169.2(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ vite: 8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.59.2(typescript@6.0.3)':
+ '@tanstack/router-utils@1.161.8':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3)
- '@typescript-eslint/types': 8.59.2
- debug: 4.4.3
- typescript: 6.0.3
+ '@babel/core': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/parser': 7.29.3
+ '@babel/types': 7.29.0
+ ansis: 4.2.0
+ babel-dead-code-elimination: 1.0.12
+ diff: 8.0.4
+ pathe: 2.0.3
+ tinyglobby: 0.2.16
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.59.2':
- dependencies:
- '@typescript-eslint/types': 8.59.2
- '@typescript-eslint/visitor-keys': 8.59.2
+ '@tanstack/store@0.9.3': {}
- '@typescript-eslint/tsconfig-utils@8.59.2(typescript@6.0.3)':
- dependencies:
- typescript: 6.0.3
+ '@tanstack/virtual-file-routes@1.161.7': {}
- '@typescript-eslint/type-utils@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)':
+ '@tybys/wasm-util@0.10.2':
dependencies:
- '@typescript-eslint/types': 8.59.2
- '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3)
- '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
- debug: 4.4.3
- eslint: 10.3.0(jiti@2.7.0)
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
+ tslib: 2.8.1
+ optional: true
- '@typescript-eslint/types@8.59.2': {}
+ '@types/linkify-it@5.0.0': {}
- '@typescript-eslint/typescript-estree@8.59.2(typescript@6.0.3)':
+ '@types/markdown-it@14.1.2':
dependencies:
- '@typescript-eslint/project-service': 8.59.2(typescript@6.0.3)
- '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3)
- '@typescript-eslint/types': 8.59.2
- '@typescript-eslint/visitor-keys': 8.59.2
- debug: 4.4.3
- minimatch: 10.2.5
- semver: 7.7.4
- tinyglobby: 0.2.16
- ts-api-utils: 2.5.0(typescript@6.0.3)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
+ '@types/linkify-it': 5.0.0
+ '@types/mdurl': 2.0.0
- '@typescript-eslint/utils@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0))
- '@typescript-eslint/scope-manager': 8.59.2
- '@typescript-eslint/types': 8.59.2
- '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3)
- eslint: 10.3.0(jiti@2.7.0)
- typescript: 6.0.3
- transitivePeerDependencies:
- - supports-color
+ '@types/mdurl@2.0.0': {}
- '@typescript-eslint/visitor-keys@8.59.2':
+ '@types/node@25.6.2':
dependencies:
- '@typescript-eslint/types': 8.59.2
- eslint-visitor-keys: 5.0.1
+ undici-types: 7.19.2
+
+ '@types/prismjs@1.26.5': {}
- acorn-jsx@5.3.2(acorn@8.16.0):
+ '@types/react-dom@19.2.3(@types/react@19.2.14)':
dependencies:
- acorn: 8.16.0
+ '@types/react': 19.2.14
- acorn@8.16.0: {}
+ '@types/react@19.2.14':
+ dependencies:
+ csstype: 3.2.3
- ajv@6.15.0:
+ '@vitejs/plugin-react@6.0.1(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4))':
dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
+ '@rolldown/pluginutils': 1.0.0-rc.7
+ vite: 8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)
ansi-escapes@7.3.0:
dependencies:
@@ -1764,40 +1747,57 @@ snapshots:
ansi-styles@6.2.3: {}
- aria-query@5.3.1: {}
+ ansis@4.2.0: {}
- autoprefixer@10.5.0(postcss@8.5.14):
+ anymatch@3.1.3:
dependencies:
- browserslist: 4.28.2
- caniuse-lite: 1.0.30001792
- fraction.js: 5.3.4
- picocolors: 1.1.1
- postcss: 8.5.14
- postcss-value-parser: 4.2.0
+ normalize-path: 3.0.0
+ picomatch: 2.3.2
- axobject-query@4.1.0: {}
+ argparse@1.0.10:
+ dependencies:
+ sprintf-js: 1.0.3
+
+ argparse@2.0.1: {}
+
+ babel-dead-code-elimination@1.0.12:
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/parser': 7.29.3
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
- balanced-match@4.0.4: {}
+ baseline-browser-mapping@2.10.29: {}
- baseline-browser-mapping@2.10.27: {}
+ binary-extensions@2.3.0: {}
- brace-expansion@5.0.5:
+ braces@3.0.3:
dependencies:
- balanced-match: 4.0.4
+ fill-range: 7.1.1
browserslist@4.28.2:
dependencies:
- baseline-browser-mapping: 2.10.27
+ baseline-browser-mapping: 2.10.29
caniuse-lite: 1.0.30001792
- electron-to-chromium: 1.5.352
+ electron-to-chromium: 1.5.353
node-releases: 2.0.38
update-browserslist-db: 1.2.3(browserslist@4.28.2)
caniuse-lite@1.0.30001792: {}
- chokidar@4.0.3:
+ chokidar@3.6.0:
dependencies:
- readdirp: 4.1.2
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
cli-cursor@5.0.0:
dependencies:
@@ -1810,181 +1810,67 @@ snapshots:
clsx@2.1.1: {}
- cookie@0.6.0: {}
+ convert-source-map@2.0.0: {}
- cross-spawn@7.0.6:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
+ cookie-es@3.1.1: {}
- cssesc@3.0.0: {}
+ csstype@3.2.3: {}
debug@4.4.3:
dependencies:
ms: 2.1.3
- deep-is@0.1.4: {}
-
- deepmerge@4.3.1: {}
-
detect-libc@2.1.2: {}
- devalue@5.8.0: {}
-
- electron-to-chromium@1.5.352: {}
-
- emoji-regex@10.6.0: {}
-
- enhanced-resolve@5.21.0:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.3.3
-
- environment@1.1.0: {}
-
- escalade@3.2.0: {}
-
- escape-string-regexp@4.0.0: {}
-
- eslint-config-prettier@10.1.8(eslint@10.3.0(jiti@2.7.0)):
- dependencies:
- eslint: 10.3.0(jiti@2.7.0)
+ diff@8.0.4: {}
- eslint-plugin-svelte@3.17.1(eslint@10.3.0(jiti@2.7.0))(svelte@5.55.5(@typescript-eslint/types@8.59.2)):
+ dom-serializer@1.4.1:
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0))
- '@jridgewell/sourcemap-codec': 1.5.5
- eslint: 10.3.0(jiti@2.7.0)
- esutils: 2.0.3
- globals: 16.5.0
- known-css-properties: 0.37.0
- postcss: 8.5.14
- postcss-load-config: 3.1.4(postcss@8.5.14)
- postcss-safe-parser: 7.0.1(postcss@8.5.14)
- semver: 7.7.4
- svelte-eslint-parser: 1.6.1(svelte@5.55.5(@typescript-eslint/types@8.59.2))
- optionalDependencies:
- svelte: 5.55.5(@typescript-eslint/types@8.59.2)
- transitivePeerDependencies:
- - ts-node
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+ entities: 2.2.0
- eslint-scope@8.4.0:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
+ domelementtype@2.3.0: {}
- eslint-scope@9.1.2:
+ domhandler@4.3.1:
dependencies:
- '@types/esrecurse': 4.3.1
- '@types/estree': 1.0.9
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint-visitor-keys@4.2.1: {}
-
- eslint-visitor-keys@5.0.1: {}
+ domelementtype: 2.3.0
- eslint@10.3.0(jiti@2.7.0):
+ domutils@2.8.0:
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0))
- '@eslint-community/regexpp': 4.12.2
- '@eslint/config-array': 0.23.5
- '@eslint/config-helpers': 0.5.5
- '@eslint/core': 1.2.1
- '@eslint/plugin-kit': 0.7.1
- '@humanfs/node': 0.16.8
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.4.3
- '@types/estree': 1.0.9
- ajv: 6.15.0
- cross-spawn: 7.0.6
- debug: 4.4.3
- escape-string-regexp: 4.0.0
- eslint-scope: 9.1.2
- eslint-visitor-keys: 5.0.1
- espree: 11.2.0
- esquery: 1.7.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 8.0.0
- find-up: 5.0.0
- glob-parent: 6.0.2
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- json-stable-stringify-without-jsonify: 1.0.1
- minimatch: 10.2.5
- natural-compare: 1.4.0
- optionator: 0.9.4
- optionalDependencies:
- jiti: 2.7.0
- transitivePeerDependencies:
- - supports-color
+ dom-serializer: 1.4.1
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
- esm-env@1.2.2: {}
+ electron-to-chromium@1.5.353: {}
- espree@10.4.0:
- dependencies:
- acorn: 8.16.0
- acorn-jsx: 5.3.2(acorn@8.16.0)
- eslint-visitor-keys: 4.2.1
+ emoji-regex@10.6.0: {}
- espree@11.2.0:
- dependencies:
- acorn: 8.16.0
- acorn-jsx: 5.3.2(acorn@8.16.0)
- eslint-visitor-keys: 5.0.1
+ entities@2.1.0: {}
- esquery@1.7.0:
- dependencies:
- estraverse: 5.3.0
+ entities@2.2.0: {}
- esrap@2.2.6(@typescript-eslint/types@8.59.2):
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
- optionalDependencies:
- '@typescript-eslint/types': 8.59.2
+ entities@4.5.0: {}
- esrecurse@4.3.0:
- dependencies:
- estraverse: 5.3.0
+ environment@1.1.0: {}
- estraverse@5.3.0: {}
+ escalade@3.2.0: {}
- esutils@2.0.3: {}
+ esprima@4.0.1: {}
eventemitter3@5.0.4: {}
- fast-deep-equal@3.1.3: {}
-
- fast-json-stable-stringify@2.1.0: {}
-
- fast-levenshtein@2.0.6: {}
-
fdir@6.5.0(picomatch@4.0.4):
optionalDependencies:
picomatch: 4.0.4
- file-entry-cache@8.0.0:
- dependencies:
- flat-cache: 4.0.1
-
- find-up@5.0.0:
+ fill-range@7.1.1:
dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
+ to-regex-range: 5.0.1
- flat-cache@4.0.1:
+ front-matter@4.0.2:
dependencies:
- flatted: 3.4.2
- keyv: 4.5.4
-
- flatted@3.4.2: {}
-
- fraction.js@5.3.4: {}
+ js-yaml: 3.14.2
fsevents@2.3.2:
optional: true
@@ -1992,60 +1878,57 @@ snapshots:
fsevents@2.3.3:
optional: true
- get-east-asian-width@1.5.0: {}
+ gensync@1.0.0-beta.2: {}
+
+ get-east-asian-width@1.6.0: {}
- glob-parent@6.0.2:
+ glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
- globals@16.5.0: {}
+ goober@2.1.18(csstype@3.2.3):
+ dependencies:
+ csstype: 3.2.3
- graceful-fs@4.2.11: {}
+ htmlparser2@6.1.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 4.3.1
+ domutils: 2.8.0
+ entities: 2.2.0
husky@9.1.7: {}
- ignore@5.3.2: {}
-
- ignore@7.0.5: {}
-
- imurmurhash@0.1.4: {}
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
is-extglob@2.1.1: {}
is-fullwidth-code-point@5.1.0:
dependencies:
- get-east-asian-width: 1.5.0
+ get-east-asian-width: 1.6.0
is-glob@4.0.3:
dependencies:
is-extglob: 2.1.1
- is-reference@3.0.3:
- dependencies:
- '@types/estree': 1.0.9
+ is-number@7.0.0: {}
- isexe@2.0.0: {}
+ isbot@5.1.40: {}
jiti@2.7.0: {}
- json-buffer@3.0.1: {}
-
- json-schema-traverse@0.4.1: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
+ js-tokens@4.0.0: {}
- keyv@4.5.4:
+ js-yaml@3.14.2:
dependencies:
- json-buffer: 3.0.1
+ argparse: 1.0.10
+ esprima: 4.0.1
- kleur@4.1.5: {}
+ jsesc@3.1.0: {}
- known-css-properties@0.37.0: {}
-
- levn@0.4.1:
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
+ json5@2.2.3: {}
lightningcss-android-arm64@1.32.0:
optional: true
@@ -2096,9 +1979,15 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.32.0
lightningcss-win32-x64-msvc: 1.32.0
- lilconfig@2.1.0: {}
+ linkify-it@3.0.3:
+ dependencies:
+ uc.micro: 1.0.6
+
+ linkify-it@5.0.0:
+ dependencies:
+ uc.micro: 2.1.0
- lint-staged@17.0.2:
+ lint-staged@17.0.4:
dependencies:
listr2: 10.2.1
picomatch: 4.0.4
@@ -2115,12 +2004,6 @@ snapshots:
rfdc: 1.4.1
wrap-ansi: 10.0.0
- locate-character@3.0.0: {}
-
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
log-update@6.1.0:
dependencies:
ansi-escapes: 7.3.0
@@ -2129,67 +2012,101 @@ snapshots:
strip-ansi: 7.2.0
wrap-ansi: 9.0.2
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
- mdsvex@0.12.7(svelte@5.55.5(@typescript-eslint/types@8.59.2)):
+ markdown-it@12.3.2:
dependencies:
- '@types/mdast': 4.0.4
- '@types/unist': 2.0.11
- prism-svelte: 0.4.7
- prismjs: 1.30.0
- svelte: 5.55.5(@typescript-eslint/types@8.59.2)
- unist-util-visit: 2.0.3
- vfile-message: 2.0.4
-
- mimic-function@5.0.1: {}
+ argparse: 2.0.1
+ entities: 2.1.0
+ linkify-it: 3.0.3
+ mdurl: 1.0.1
+ uc.micro: 1.0.6
- minimatch@10.2.5:
+ markdown-it@14.1.0:
dependencies:
- brace-expansion: 5.0.5
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
- mri@1.2.0: {}
+ mdurl@1.0.1: {}
- mrmime@2.0.1: {}
+ mdurl@2.0.0: {}
+
+ mimic-function@5.0.1: {}
ms@2.1.3: {}
nanoid@3.3.12: {}
- natural-compare@1.4.0: {}
-
node-releases@2.0.38: {}
- obug@2.1.1: {}
+ normalize-path@3.0.0: {}
onetime@7.0.0:
dependencies:
mimic-function: 5.0.1
- optionator@0.9.4:
- dependencies:
- deep-is: 0.1.4
- fast-levenshtein: 2.0.6
- levn: 0.4.1
- prelude-ls: 1.2.1
- type-check: 0.4.0
- word-wrap: 1.2.5
-
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-locate@5.0.0:
+ oxfmt@0.48.0:
dependencies:
- p-limit: 3.1.0
-
- path-exists@4.0.0: {}
-
- path-key@3.1.1: {}
+ tinypool: 2.1.0
+ optionalDependencies:
+ '@oxfmt/binding-android-arm-eabi': 0.48.0
+ '@oxfmt/binding-android-arm64': 0.48.0
+ '@oxfmt/binding-darwin-arm64': 0.48.0
+ '@oxfmt/binding-darwin-x64': 0.48.0
+ '@oxfmt/binding-freebsd-x64': 0.48.0
+ '@oxfmt/binding-linux-arm-gnueabihf': 0.48.0
+ '@oxfmt/binding-linux-arm-musleabihf': 0.48.0
+ '@oxfmt/binding-linux-arm64-gnu': 0.48.0
+ '@oxfmt/binding-linux-arm64-musl': 0.48.0
+ '@oxfmt/binding-linux-ppc64-gnu': 0.48.0
+ '@oxfmt/binding-linux-riscv64-gnu': 0.48.0
+ '@oxfmt/binding-linux-riscv64-musl': 0.48.0
+ '@oxfmt/binding-linux-s390x-gnu': 0.48.0
+ '@oxfmt/binding-linux-x64-gnu': 0.48.0
+ '@oxfmt/binding-linux-x64-musl': 0.48.0
+ '@oxfmt/binding-openharmony-arm64': 0.48.0
+ '@oxfmt/binding-win32-arm64-msvc': 0.48.0
+ '@oxfmt/binding-win32-ia32-msvc': 0.48.0
+ '@oxfmt/binding-win32-x64-msvc': 0.48.0
+
+ oxlint@1.63.0:
+ optionalDependencies:
+ '@oxlint/binding-android-arm-eabi': 1.63.0
+ '@oxlint/binding-android-arm64': 1.63.0
+ '@oxlint/binding-darwin-arm64': 1.63.0
+ '@oxlint/binding-darwin-x64': 1.63.0
+ '@oxlint/binding-freebsd-x64': 1.63.0
+ '@oxlint/binding-linux-arm-gnueabihf': 1.63.0
+ '@oxlint/binding-linux-arm-musleabihf': 1.63.0
+ '@oxlint/binding-linux-arm64-gnu': 1.63.0
+ '@oxlint/binding-linux-arm64-musl': 1.63.0
+ '@oxlint/binding-linux-ppc64-gnu': 1.63.0
+ '@oxlint/binding-linux-riscv64-gnu': 1.63.0
+ '@oxlint/binding-linux-riscv64-musl': 1.63.0
+ '@oxlint/binding-linux-s390x-gnu': 1.63.0
+ '@oxlint/binding-linux-x64-gnu': 1.63.0
+ '@oxlint/binding-linux-x64-musl': 1.63.0
+ '@oxlint/binding-openharmony-arm64': 1.63.0
+ '@oxlint/binding-win32-arm64-msvc': 1.63.0
+ '@oxlint/binding-win32-ia32-msvc': 1.63.0
+ '@oxlint/binding-win32-x64-msvc': 1.63.0
+
+ pathe@2.0.3: {}
picocolors@1.1.1: {}
+ picomatch@2.3.2: {}
+
picomatch@4.0.4: {}
playwright-core@1.59.1: {}
@@ -2200,52 +2117,28 @@ snapshots:
optionalDependencies:
fsevents: 2.3.2
- postcss-load-config@3.1.4(postcss@8.5.14):
- dependencies:
- lilconfig: 2.1.0
- yaml: 1.10.3
- optionalDependencies:
- postcss: 8.5.14
-
- postcss-safe-parser@7.0.1(postcss@8.5.14):
- dependencies:
- postcss: 8.5.14
-
- postcss-scss@4.0.9(postcss@8.5.14):
- dependencies:
- postcss: 8.5.14
-
- postcss-selector-parser@7.1.1:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-value-parser@4.2.0: {}
-
postcss@8.5.14:
dependencies:
nanoid: 3.3.12
picocolors: 1.1.1
source-map-js: 1.2.1
- prelude-ls@1.2.1: {}
-
- prettier-plugin-svelte@3.5.1(prettier@3.8.3)(svelte@5.55.5(@typescript-eslint/types@8.59.2)):
- dependencies:
- prettier: 3.8.3
- svelte: 5.55.5(@typescript-eslint/types@8.59.2)
-
prettier@3.8.3: {}
- prism-svelte@0.4.7: {}
+ prismjs@1.30.0: {}
- prism-themes@1.9.0: {}
+ punycode.js@2.3.1: {}
- prismjs@1.30.0: {}
+ react-dom@19.2.6(react@19.2.6):
+ dependencies:
+ react: 19.2.6
+ scheduler: 0.27.0
- punycode@2.3.1: {}
+ react@19.2.6: {}
- readdirp@4.1.2: {}
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.2
restore-cursor@5.1.0:
dependencies:
@@ -2275,28 +2168,18 @@ snapshots:
'@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.18
'@rolldown/binding-win32-x64-msvc': 1.0.0-rc.18
- sade@1.8.1:
- dependencies:
- mri: 1.2.0
-
- semver@7.7.4: {}
+ scheduler@0.27.0: {}
- set-cookie-parser@3.1.0: {}
+ semver@6.3.1: {}
- shebang-command@2.0.0:
+ seroval-plugins@1.5.4(seroval@1.5.4):
dependencies:
- shebang-regex: 3.0.0
+ seroval: 1.5.4
- shebang-regex@3.0.0: {}
+ seroval@1.5.4: {}
signal-exit@4.1.0: {}
- sirv@3.0.2:
- dependencies:
- '@polka/url': 1.0.0-next.29
- mrmime: 2.0.1
- totalist: 3.0.1
-
slice-ansi@7.1.2:
dependencies:
ansi-styles: 6.2.3
@@ -2309,72 +2192,25 @@ snapshots:
source-map-js@1.2.1: {}
+ sprintf-js@1.0.3: {}
+
string-argv@0.3.2: {}
string-width@7.2.0:
dependencies:
emoji-regex: 10.6.0
- get-east-asian-width: 1.5.0
+ get-east-asian-width: 1.6.0
strip-ansi: 7.2.0
string-width@8.2.1:
dependencies:
- get-east-asian-width: 1.5.0
+ get-east-asian-width: 1.6.0
strip-ansi: 7.2.0
strip-ansi@7.2.0:
dependencies:
ansi-regex: 6.2.2
- svelte-check@4.4.8(picomatch@4.0.4)(svelte@5.55.5(@typescript-eslint/types@8.59.2))(typescript@6.0.3):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- chokidar: 4.0.3
- fdir: 6.5.0(picomatch@4.0.4)
- picocolors: 1.1.1
- sade: 1.8.1
- svelte: 5.55.5(@typescript-eslint/types@8.59.2)
- typescript: 6.0.3
- transitivePeerDependencies:
- - picomatch
-
- svelte-eslint-parser@1.6.1(svelte@5.55.5(@typescript-eslint/types@8.59.2)):
- dependencies:
- eslint-scope: 8.4.0
- eslint-visitor-keys: 4.2.1
- espree: 10.4.0
- postcss: 8.5.14
- postcss-scss: 4.0.9(postcss@8.5.14)
- postcss-selector-parser: 7.1.1
- semver: 7.7.4
- optionalDependencies:
- svelte: 5.55.5(@typescript-eslint/types@8.59.2)
-
- svelte@5.55.5(@typescript-eslint/types@8.59.2):
- dependencies:
- '@jridgewell/remapping': 2.3.5
- '@jridgewell/sourcemap-codec': 1.5.5
- '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0)
- '@types/estree': 1.0.9
- '@types/trusted-types': 2.0.7
- acorn: 8.16.0
- aria-query: 5.3.1
- axobject-query: 4.1.0
- clsx: 2.1.1
- devalue: 5.8.0
- esm-env: 1.2.2
- esrap: 2.2.6(@typescript-eslint/types@8.59.2)
- is-reference: 3.0.3
- locate-character: 3.0.0
- magic-string: 0.30.21
- zimmerframe: 1.1.4
- transitivePeerDependencies:
- - '@typescript-eslint/types'
-
- tailwindcss@4.2.4: {}
-
- tapable@2.3.3: {}
-
tinyexec@1.1.2: {}
tinyglobby@0.2.16:
@@ -2382,38 +2218,28 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
- totalist@3.0.1: {}
+ tinypool@2.1.0: {}
- ts-api-utils@2.5.0(typescript@6.0.3):
+ to-regex-range@5.0.1:
dependencies:
- typescript: 6.0.3
-
- tslib@2.8.1: {}
+ is-number: 7.0.0
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
+ tslib@2.8.1:
+ optional: true
typescript@6.0.3: {}
- undici-types@7.19.2: {}
-
- unist-util-is@4.1.0: {}
+ uc.micro@1.0.6: {}
- unist-util-stringify-position@2.0.3:
- dependencies:
- '@types/unist': 2.0.11
+ uc.micro@2.1.0: {}
- unist-util-visit-parents@3.1.1:
- dependencies:
- '@types/unist': 2.0.11
- unist-util-is: 4.1.0
+ undici-types@7.19.2: {}
- unist-util-visit@2.0.3:
+ unplugin@3.0.0:
dependencies:
- '@types/unist': 2.0.11
- unist-util-is: 4.1.0
- unist-util-visit-parents: 3.1.1
+ '@jridgewell/remapping': 2.3.5
+ picomatch: 4.0.4
+ webpack-virtual-modules: 0.6.2
update-browserslist-db@1.2.3(browserslist@4.28.2):
dependencies:
@@ -2421,16 +2247,17 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
- uri-js@4.4.1:
+ use-sync-external-store@1.6.0(react@19.2.6):
dependencies:
- punycode: 2.3.1
+ react: 19.2.6
- util-deprecate@1.0.2: {}
-
- vfile-message@2.0.4:
+ vite-plugin-markdown@2.2.0(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)):
dependencies:
- '@types/unist': 2.0.11
- unist-util-stringify-position: 2.0.3
+ domhandler: 4.3.1
+ front-matter: 4.0.2
+ htmlparser2: 6.1.0
+ markdown-it: 12.3.2
+ vite: 8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)
vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4):
dependencies:
@@ -2445,15 +2272,7 @@ snapshots:
jiti: 2.7.0
yaml: 2.8.4
- vitefu@1.1.3(vite@8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)):
- optionalDependencies:
- vite: 8.0.11(@types/node@25.6.2)(jiti@2.7.0)(yaml@2.8.4)
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- word-wrap@1.2.5: {}
+ webpack-virtual-modules@0.6.2: {}
wrap-ansi@10.0.0:
dependencies:
@@ -2467,11 +2286,9 @@ snapshots:
string-width: 7.2.0
strip-ansi: 7.2.0
- yaml@1.10.3: {}
+ yallist@3.1.1: {}
yaml@2.8.4:
optional: true
- yocto-queue@0.1.0: {}
-
- zimmerframe@1.1.4: {}
+ zod@3.25.76: {}
diff --git a/postcss.config.mjs b/postcss.config.mjs
deleted file mode 100644
index 8168db8..0000000
--- a/postcss.config.mjs
+++ /dev/null
@@ -1,4 +0,0 @@
-export default {
- "@tailwindcss/postcss": {},
- autoprefixer: {},
-};
diff --git a/static/family.webp b/public/family.webp
similarity index 100%
rename from static/family.webp
rename to public/family.webp
diff --git a/public/favicon.png b/public/favicon.png
new file mode 100644
index 0000000..36224a5
Binary files /dev/null and b/public/favicon.png differ
diff --git a/static/robots.txt b/public/robots.txt
similarity index 100%
rename from static/robots.txt
rename to public/robots.txt
diff --git a/scripts/rss.mjs b/scripts/rss.mjs
new file mode 100644
index 0000000..a140681
--- /dev/null
+++ b/scripts/rss.mjs
@@ -0,0 +1,87 @@
+import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
+import { join } from "node:path";
+
+const siteUrl = process.env.SITE_URL ?? "https://ajbienz.me";
+const postsDirectory = join(process.cwd(), "src", "markdown", "posts");
+const outputFile = join(process.cwd(), "public", "rss.xml");
+
+const postFiles = (await readdir(postsDirectory)).filter((file) => file.endsWith(".md")).sort();
+
+const items = await Promise.all(
+ postFiles.map(async (file) => {
+ const id = file.replace(/\.md$/, "");
+ const raw = await readFile(join(postsDirectory, file), "utf8");
+ const metadata = parseFrontmatter(raw, file);
+ const url = `${siteUrl}/blog/${id}/`;
+
+ return ` -
+
${escapeXml(metadata.title)}
+ ${escapeXml(url)}
+ ${escapeXml(url)}
+ ${escapeXml(metadata.description)}
+ `;
+ }),
+);
+
+const rss = `
+
+
+ AJ Bienz
+ ${escapeXml(siteUrl)}/
+ Technical notes from AJ Bienz.
+${items.join("\n")}
+
+
+`;
+
+await mkdir(join(process.cwd(), "public"), { recursive: true });
+await writeFile(outputFile, rss);
+
+function parseFrontmatter(raw, file) {
+ const match = raw.match(/^---\n([\s\S]*?)\n---/);
+
+ if (!match) {
+ throw new Error(`Missing frontmatter in ${file}`);
+ }
+
+ const fields = Object.fromEntries(
+ match[1]
+ .split("\n")
+ .filter(Boolean)
+ .map((line) => {
+ const separatorIndex = line.indexOf(":");
+
+ if (separatorIndex === -1) {
+ throw new Error(`Invalid frontmatter line in ${file}: ${line}`);
+ }
+
+ return [
+ line.slice(0, separatorIndex).trim(),
+ parseFrontmatterValue(line.slice(separatorIndex + 1).trim()),
+ ];
+ }),
+ );
+
+ if (typeof fields.title !== "string" || typeof fields.description !== "string") {
+ throw new Error(`Invalid RSS frontmatter in ${file}`);
+ }
+
+ return fields;
+}
+
+function parseFrontmatterValue(value) {
+ if (value.startsWith("[") || value.startsWith('"')) {
+ return JSON.parse(value);
+ }
+
+ return value;
+}
+
+function escapeXml(value) {
+ return value
+ .replaceAll("&", "&")
+ .replaceAll("<", "<")
+ .replaceAll(">", ">")
+ .replaceAll('"', """)
+ .replaceAll("'", "'");
+}
diff --git a/src/app.css b/src/app.css
deleted file mode 100644
index 30d9f49..0000000
--- a/src/app.css
+++ /dev/null
@@ -1,84 +0,0 @@
-@import "./highlight.css";
-@import "tailwindcss";
-
-@theme {
- --spacing-3xl: 48rem;
- --spacing-4xl: 56rem;
-}
-
-@layer base {
- h1 {
- @apply text-4xl;
- @apply font-bold;
- margin-block-start: 0.67em;
- margin-block-end: 0.67em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- }
- h2 {
- @apply text-3xl;
- @apply font-bold;
- margin-block-start: 0.83em;
- margin-block-end: 0.83em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- }
- h3 {
- @apply text-2xl;
- @apply font-bold;
- margin-block-start: 1em;
- margin-block-end: 1em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- }
- h4 {
- @apply text-xl;
- @apply font-bold;
- margin-block-start: 1.33em;
- margin-block-end: 1.33em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- }
- h5 {
- @apply text-lg;
- @apply font-bold;
- margin-block-start: 1.67em;
- margin-block-end: 1.67em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- }
- h6 {
- @apply text-base;
- @apply font-bold;
- margin-block-start: 2.33em;
- margin-block-end: 2.33em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- }
- ul {
- list-style: disc;
- margin-block-start: 1em;
- margin-block-end: 1em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- padding-inline-start: 40px;
- }
- ol {
- list-style: decimal;
- margin-block-start: 1em;
- margin-block-end: 1em;
- margin-inline-start: 0px;
- margin-inline-end: 0px;
- padding-inline-start: 40px;
- }
- a {
- @apply underline;
- }
- p {
- @apply my-8;
- }
- code,
- pre {
- overflow-x: scroll;
- }
-}
diff --git a/src/app.d.ts b/src/app.d.ts
deleted file mode 100644
index 09b7443..0000000
--- a/src/app.d.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-///
-
-// See https://kit.svelte.dev/docs/types#the-app-namespace
-// for information about these interfaces
-declare namespace App {
- // interface Locals {}
- // interface Platform {}
- // interface Session {}
- // interface Stuff {}
-}
-
-declare module "*.svelte" {
- import type { Component } from "svelte";
-
- const component: Component;
- export default component;
-}
diff --git a/src/app.html b/src/app.html
deleted file mode 100644
index c00d228..0000000
--- a/src/app.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
- %sveltekit.head%
-
-
- %sveltekit.body%
-
-
diff --git a/src/components/Command.tsx b/src/components/Command.tsx
new file mode 100644
index 0000000..9038f15
--- /dev/null
+++ b/src/components/Command.tsx
@@ -0,0 +1,5 @@
+import type { ReactNode } from "react";
+
+export function Command({ children }: { children: ReactNode }) {
+ return aj@rva $ {children}
;
+}
diff --git a/src/components/PostList.tsx b/src/components/PostList.tsx
new file mode 100644
index 0000000..ebaf036
--- /dev/null
+++ b/src/components/PostList.tsx
@@ -0,0 +1,21 @@
+import { Link } from "@tanstack/react-router";
+
+import { posts } from "../data";
+
+export function PostList() {
+ return (
+
+ );
+}
diff --git a/src/components/Shell.tsx b/src/components/Shell.tsx
new file mode 100644
index 0000000..54118a2
--- /dev/null
+++ b/src/components/Shell.tsx
@@ -0,0 +1,32 @@
+import { Link, Outlet } from "@tanstack/react-router";
+import { TanStackRouterDevtools } from "@tanstack/react-router-devtools";
+
+export function Shell({ title }: { title: string }) {
+ return (
+
+
+
+ AJ Bienz
+
+
+ about
+ notes
+ rss
+
+
+
+
+
+
+
+
+ {title}
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/components/SocialLinks.tsx b/src/components/SocialLinks.tsx
new file mode 100644
index 0000000..3aede8b
--- /dev/null
+++ b/src/components/SocialLinks.tsx
@@ -0,0 +1,13 @@
+import { socials } from "../data";
+
+export function SocialLinks() {
+ return (
+
+ );
+}
diff --git a/src/data.ts b/src/data.ts
new file mode 100644
index 0000000..c5fb35d
--- /dev/null
+++ b/src/data.ts
@@ -0,0 +1,76 @@
+import { html as aboutHtml } from "./markdown/about.md";
+
+type Frontmatter = {
+ title: string;
+ description: string;
+ tags: string[];
+};
+
+type MarkdownDocument = {
+ attributes: Record;
+ html: string;
+};
+
+export type Post = Frontmatter & {
+ id: string;
+ html: string;
+};
+
+const modules = import.meta.glob("./markdown/posts/*.md", {
+ eager: true,
+});
+
+export const posts: Post[] = Object.entries(modules)
+ .map(([path, document]) => {
+ const id = path.split("/").pop()?.replace(/\.md$/, "");
+
+ if (!id || !isMarkdownDocument(document)) {
+ throw new Error(`Invalid post import: ${path}`);
+ }
+
+ const frontmatter = parsePostFrontmatter(document.attributes, path);
+
+ return {
+ id,
+ ...frontmatter,
+ html: document.html,
+ };
+ })
+ .sort((a, b) => a.id.localeCompare(b.id));
+
+export const about = {
+ html: aboutHtml,
+};
+
+export const socials = [
+ { label: "GitHub", href: "https://github.com/bienzaaron" },
+ { label: "LinkedIn", href: "https://www.linkedin.com/in/abienz" },
+ { label: "npm", href: "https://www.npmjs.com/~ajbienz" },
+];
+
+function isMarkdownDocument(value: unknown): value is MarkdownDocument {
+ return (
+ typeof value === "object" &&
+ value !== null &&
+ "attributes" in value &&
+ "html" in value &&
+ typeof value.html === "string"
+ );
+}
+
+function parsePostFrontmatter(fields: Record, path: string): Frontmatter {
+ if (
+ typeof fields.title !== "string" ||
+ typeof fields.description !== "string" ||
+ !Array.isArray(fields.tags) ||
+ !fields.tags.every((tag) => typeof tag === "string")
+ ) {
+ throw new Error(`Invalid frontmatter in ${path}`);
+ }
+
+ return {
+ title: fields.title,
+ description: fields.description,
+ tags: fields.tags,
+ };
+}
diff --git a/src/highlight.css b/src/highlight.css
deleted file mode 100644
index d79ac80..0000000
--- a/src/highlight.css
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * Dracula Theme originally by Zeno Rocha [@zenorocha]
- * https://draculatheme.com/
- *
- * Ported for PrismJS by Albert Vallverdu [@byverdu]
- */
-
-code[class*="language-"],
-pre[class*="language-"] {
- color: #f8f8f2;
- background: none;
- text-shadow: 0 1px rgba(0, 0, 0, 0.3);
- font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
- text-align: left;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- line-height: 1.5;
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
- hyphens: none;
-}
-
-/* Code blocks */
-pre[class*="language-"] {
- padding: 1em;
- margin: 0.5em 0;
- overflow: auto;
- border-radius: 0.3em;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
- background: #282a36;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
- padding: 0.1em;
- border-radius: 0.3em;
- white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
- color: #6272a4;
-}
-
-.token.punctuation {
- color: #f8f8f2;
-}
-
-.namespace {
- opacity: 0.7;
-}
-
-.token.property,
-.token.tag,
-.token.constant,
-.token.symbol,
-.token.deleted {
- color: #ff79c6;
-}
-
-.token.boolean,
-.token.number {
- color: #bd93f9;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
- color: #50fa7b;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string,
-.token.variable {
- color: #f8f8f2;
-}
-
-.token.atrule,
-.token.attr-value,
-.token.function,
-.token.class-name {
- color: #f1fa8c;
-}
-
-.token.keyword {
- color: #8be9fd;
-}
-
-.token.regex,
-.token.important {
- color: #ffb86c;
-}
-
-.token.important,
-.token.bold {
- font-weight: bold;
-}
-
-.token.italic {
- font-style: italic;
-}
-
-.token.entity {
- cursor: help;
-}
diff --git a/src/lib/actions/click-outside.ts b/src/lib/actions/click-outside.ts
deleted file mode 100644
index e85a5ef..0000000
--- a/src/lib/actions/click-outside.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export default function clickOutside(node: HTMLElement, handler: () => void) {
- const onClick = (event: MouseEvent) => {
- if (!node.contains(event.target as Node)) {
- handler();
- }
- };
-
- document.addEventListener("click", onClick, true);
-
- return {
- destroy() {
- document.removeEventListener("click", onClick, true);
- },
- };
-}
diff --git a/src/lib/components/family.svelte b/src/lib/components/family.svelte
deleted file mode 100644
index bf0270b..0000000
--- a/src/lib/components/family.svelte
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
diff --git a/src/lib/components/icons/github.svelte b/src/lib/components/icons/github.svelte
deleted file mode 100644
index b8f7bf1..0000000
--- a/src/lib/components/icons/github.svelte
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/src/lib/components/icons/linkedin.svelte b/src/lib/components/icons/linkedin.svelte
deleted file mode 100644
index 46fb530..0000000
--- a/src/lib/components/icons/linkedin.svelte
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/src/lib/components/icons/menu.svelte b/src/lib/components/icons/menu.svelte
deleted file mode 100644
index 2599126..0000000
--- a/src/lib/components/icons/menu.svelte
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/src/lib/components/icons/npm.svelte b/src/lib/components/icons/npm.svelte
deleted file mode 100644
index 4e4361b..0000000
--- a/src/lib/components/icons/npm.svelte
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/src/lib/markdown/about.md b/src/lib/markdown/about.md
deleted file mode 100644
index 3a4685d..0000000
--- a/src/lib/markdown/about.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# About Me
-
-Hey, there! Thanks for checking out my site. I'm a full-stack software engineer, currently employed at Capital One and living in Richmond, Virgina with my wife, dog, and two cats.
-
-My technical interests include systems programming and embedded systems (although, I don't get to work on that sort of technology much in a professional capacity these days). For work, I work with TypeScript and Node.js quite a lot, and also work on some vanilla JS web frontend stuff. I don't do a whole lot of frontend application development or design work, but I'll do it if you twist my arm - I always try to find tooling that makes it as easy as possible though. For example, this site is mostly written in markdown, and almost all of the styles come from [Tailwind](https://tailwindcss.com/). More about how this site is built over on my [blog](/blog/).
-
-When I'm not writing code, I can usually be found sipping on a cup of coffee or pursuing one of my many hobbies. I enjoy camping, backpacking, fishing, and just generally anything that gets me outdoors - bonus points if I can bring my pup with me! I'm also an avid woodworker, motorcyclist, home mechanic, and general tinkerer. I always have a project going on (or more realisitically, several), so you'll never find me without something to work on - lately I've been juggling a few home renovation projects. You can check out my [blog pages](/blog/) to find our more about my projects and hobbies.
diff --git a/src/lib/markdown/family.md b/src/lib/markdown/family.md
deleted file mode 100644
index 71caf26..0000000
--- a/src/lib/markdown/family.md
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-Also, here's a picture of me, my wife, and all my pets 🐶 😸
-
-
diff --git a/src/lib/markdown/intro.md b/src/lib/markdown/intro.md
deleted file mode 100644
index dd7934f..0000000
--- a/src/lib/markdown/intro.md
+++ /dev/null
@@ -1,4 +0,0 @@
-Hey! I'm AJ. I'm a software engineer and general computer nerd, currently living in Richmond, VA and employed at Capital
-One.
-
-This is my little corner of the internet. Feel free to click around to find more about me, read some of my partially-coherent ramblings, and even download my resume if you are interested in hiring me. 😱
diff --git a/src/lib/types.ts b/src/lib/types.ts
deleted file mode 100644
index 1f17a9c..0000000
--- a/src/lib/types.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-export type TagMetadata = { count: number; selected: boolean };
-
-export type PostMetadata = {
- tags: string[];
- title: string;
- description: string;
-};
-
-export type PostPreview = {
- id: string;
- metadata: PostMetadata;
-};
-
-export type Post = PostPreview & {
- content: string;
-};
-
-export type GetPostRequest = {
- params: {
- postId: string;
- };
-};
-
-export type GetPostsResponse = PostPreview[];
-
-export type SvelteStore = {
- subscribe: (run: (value: T) => unknown, invalidate?: unknown) => unknown;
-};
diff --git a/src/main.tsx b/src/main.tsx
new file mode 100644
index 0000000..1ea2294
--- /dev/null
+++ b/src/main.tsx
@@ -0,0 +1,14 @@
+import React from "react";
+import { createRoot } from "react-dom/client";
+import { RouterProvider } from "@tanstack/react-router";
+
+import { getRouter } from "./router";
+import "./styles.css";
+
+const router = getRouter();
+
+createRoot(document.getElementById("root")!).render(
+
+
+ ,
+);
diff --git a/src/markdown.d.ts b/src/markdown.d.ts
deleted file mode 100644
index 43d69c1..0000000
--- a/src/markdown.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-declare module "blog/*.md" {
- import { SvelteComponent } from "svelte";
- import type { PostMetadata } from "$lib/types";
- export default class MarkdownComponent extends SvelteComponent<
- Record
- > {}
- export type metadata = PostMetadata;
-}
-
-declare module "*.md" {
- import { SvelteComponent } from "svelte";
- export default class MarkdownComponent extends SvelteComponent<
- Record
- > {}
- export type metadata = Record;
-}
diff --git a/src/markdown/about.md b/src/markdown/about.md
new file mode 100644
index 0000000..be7ecf5
--- /dev/null
+++ b/src/markdown/about.md
@@ -0,0 +1,7 @@
+# About Me
+
+Hey, there! Thanks for checking out my site. I'm a full-stack software engineer, currently employed at Capital One and living in Richmond, Virginia with my wife, dog, and two cats.
+
+My technical interests include systems programming and embedded systems although I don't get to work on that sort of technology much in a professional capacity these days. For work, I work with TypeScript and Node.js quite a lot, and also work on some vanilla JS web frontend stuff.
+
+When I'm not writing code, I can usually be found sipping on a cup of coffee or pursuing one of my many hobbies. I enjoy camping, backpacking, fishing, woodworking, motorcycling, home mechanics, and general tinkering.
diff --git a/src/lib/markdown/blog/1-building-this-site.md b/src/markdown/posts/1-building-this-site.md
similarity index 100%
rename from src/lib/markdown/blog/1-building-this-site.md
rename to src/markdown/posts/1-building-this-site.md
diff --git a/src/lib/markdown/blog/2-another-post.md b/src/markdown/posts/2-another-post.md
similarity index 69%
rename from src/lib/markdown/blog/2-another-post.md
rename to src/markdown/posts/2-another-post.md
index cec2a0d..34fe49a 100644
--- a/src/lib/markdown/blog/2-another-post.md
+++ b/src/markdown/posts/2-another-post.md
@@ -4,4 +4,4 @@ title: "Just Messin' Around"
description: "blah blah blah"
---
-This is really just here for testing purposes
+This is really just here for testing purposes.
diff --git a/src/pages/About.tsx b/src/pages/About.tsx
new file mode 100644
index 0000000..8c27ab1
--- /dev/null
+++ b/src/pages/About.tsx
@@ -0,0 +1,11 @@
+import { Command } from "../components/Command";
+import { about } from "../data";
+
+export function About() {
+ return (
+ <>
+ cat about.md
+
+ >
+ );
+}
diff --git a/src/pages/Blog.tsx b/src/pages/Blog.tsx
new file mode 100644
index 0000000..b23d86c
--- /dev/null
+++ b/src/pages/Blog.tsx
@@ -0,0 +1,11 @@
+import { Command } from "../components/Command";
+import { PostList } from "../components/PostList";
+
+export function Blog() {
+ return (
+ <>
+ ls notes
+
+ >
+ );
+}
diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx
new file mode 100644
index 0000000..20e5155
--- /dev/null
+++ b/src/pages/Home.tsx
@@ -0,0 +1,34 @@
+import { Command } from "../components/Command";
+import { PostList } from "../components/PostList";
+import { SocialLinks } from "../components/SocialLinks";
+
+export function Home() {
+ return (
+ <>
+ whoami
+
+
+ Hey! I'm AJ. I'm a software engineer and general computer nerd, currently living
+ in Richmond, VA and employed at Capital One.
+
+
+ This is my little corner of the internet. Feel free to click around to find more about me,
+ read some of my partially-coherent ramblings, and even download my resume if you are
+ interested in hiring me.
+
+
+
+ ls notes
+
+
+ cat family.webp
+
+
+ Me, my wife, and the pets who run the house.
+
+
+ cat socials.md
+
+ >
+ );
+}
diff --git a/src/pages/NotFound.tsx b/src/pages/NotFound.tsx
new file mode 100644
index 0000000..7544691
--- /dev/null
+++ b/src/pages/NotFound.tsx
@@ -0,0 +1,15 @@
+import { Command } from "../components/Command";
+
+export function NotFound() {
+ return (
+ <>
+ cat missing-file
+
+
Not Found
+
+ That page does not exist. Try heading home .
+
+
+ >
+ );
+}
diff --git a/src/pages/PostPage.tsx b/src/pages/PostPage.tsx
new file mode 100644
index 0000000..e01ef1f
--- /dev/null
+++ b/src/pages/PostPage.tsx
@@ -0,0 +1,15 @@
+import type { Post } from "../data";
+import { Command } from "../components/Command";
+
+export function PostPage({ post }: { post: Post }) {
+ return (
+ <>
+ cat notes/{post.id}.md
+
+ {post.title}
+ {post.description}
+
+
+ >
+ );
+}
diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts
new file mode 100644
index 0000000..157debe
--- /dev/null
+++ b/src/routeTree.gen.ts
@@ -0,0 +1,113 @@
+/* eslint-disable */
+
+// @ts-nocheck
+
+// noinspection JSUnusedGlobalSymbols
+
+// This file was automatically generated by TanStack Router.
+// You should NOT make any changes in this file as it will be overwritten.
+// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
+
+import { Route as rootRouteImport } from "./routes/__root";
+import { Route as BlogRouteImport } from "./routes/blog";
+import { Route as AboutRouteImport } from "./routes/about";
+import { Route as IndexRouteImport } from "./routes/index";
+import { Route as BlogPostIdRouteImport } from "./routes/blog_.$postId";
+
+const BlogRoute = BlogRouteImport.update({
+ id: "/blog",
+ path: "/blog",
+ getParentRoute: () => rootRouteImport,
+} as any);
+const AboutRoute = AboutRouteImport.update({
+ id: "/about",
+ path: "/about",
+ getParentRoute: () => rootRouteImport,
+} as any);
+const IndexRoute = IndexRouteImport.update({
+ id: "/",
+ path: "/",
+ getParentRoute: () => rootRouteImport,
+} as any);
+const BlogPostIdRoute = BlogPostIdRouteImport.update({
+ id: "/blog_/$postId",
+ path: "/blog/$postId",
+ getParentRoute: () => rootRouteImport,
+} as any);
+
+export interface FileRoutesByFullPath {
+ "/": typeof IndexRoute;
+ "/about": typeof AboutRoute;
+ "/blog": typeof BlogRoute;
+ "/blog/$postId": typeof BlogPostIdRoute;
+}
+export interface FileRoutesByTo {
+ "/": typeof IndexRoute;
+ "/about": typeof AboutRoute;
+ "/blog": typeof BlogRoute;
+ "/blog/$postId": typeof BlogPostIdRoute;
+}
+export interface FileRoutesById {
+ __root__: typeof rootRouteImport;
+ "/": typeof IndexRoute;
+ "/about": typeof AboutRoute;
+ "/blog": typeof BlogRoute;
+ "/blog_/$postId": typeof BlogPostIdRoute;
+}
+export interface FileRouteTypes {
+ fileRoutesByFullPath: FileRoutesByFullPath;
+ fullPaths: "/" | "/about" | "/blog" | "/blog/$postId";
+ fileRoutesByTo: FileRoutesByTo;
+ to: "/" | "/about" | "/blog" | "/blog/$postId";
+ id: "__root__" | "/" | "/about" | "/blog" | "/blog_/$postId";
+ fileRoutesById: FileRoutesById;
+}
+export interface RootRouteChildren {
+ IndexRoute: typeof IndexRoute;
+ AboutRoute: typeof AboutRoute;
+ BlogRoute: typeof BlogRoute;
+ BlogPostIdRoute: typeof BlogPostIdRoute;
+}
+
+declare module "@tanstack/react-router" {
+ interface FileRoutesByPath {
+ "/blog": {
+ id: "/blog";
+ path: "/blog";
+ fullPath: "/blog";
+ preLoaderRoute: typeof BlogRouteImport;
+ parentRoute: typeof rootRouteImport;
+ };
+ "/about": {
+ id: "/about";
+ path: "/about";
+ fullPath: "/about";
+ preLoaderRoute: typeof AboutRouteImport;
+ parentRoute: typeof rootRouteImport;
+ };
+ "/": {
+ id: "/";
+ path: "/";
+ fullPath: "/";
+ preLoaderRoute: typeof IndexRouteImport;
+ parentRoute: typeof rootRouteImport;
+ };
+ "/blog_/$postId": {
+ id: "/blog_/$postId";
+ path: "/blog/$postId";
+ fullPath: "/blog/$postId";
+ preLoaderRoute: typeof BlogPostIdRouteImport;
+ parentRoute: typeof rootRouteImport;
+ };
+ }
+}
+
+const rootRouteChildren: RootRouteChildren = {
+ IndexRoute: IndexRoute,
+ AboutRoute: AboutRoute,
+ BlogRoute: BlogRoute,
+ BlogPostIdRoute: BlogPostIdRoute,
+};
+export const routeTree = rootRouteImport
+ ._addFileChildren(rootRouteChildren)
+ ._addFileTypes();
diff --git a/src/router.tsx b/src/router.tsx
new file mode 100644
index 0000000..9e1670a
--- /dev/null
+++ b/src/router.tsx
@@ -0,0 +1,17 @@
+import { createRouter } from "@tanstack/react-router";
+
+import { routeTree } from "./routeTree.gen";
+
+export function getRouter() {
+ return createRouter({
+ routeTree,
+ defaultPreload: "intent",
+ scrollRestoration: true,
+ });
+}
+
+declare module "@tanstack/react-router" {
+ interface Register {
+ router: ReturnType;
+ }
+}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
deleted file mode 100644
index b6e49c2..0000000
--- a/src/routes/+layout.svelte
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
- AJ Bienz
-
-
-
-
-
-
-
-
(showMenu = false)}>
- {
- showMenu = !showMenu;
- }}
- aria-label="Show Navigation Menu"
- class="rounded-sm shadow-sm py-2 px-2 h-min focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-slate-500"
- >
-
-
-
-
- {#if showMenu}
-
- {/if}
-
-
-
-
- {@render children?.()}
-
-
-
-
-
-
diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts
deleted file mode 100644
index e325c17..0000000
--- a/src/routes/+layout.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export const prerender = true;
-export const trailingSlash = "always";
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
deleted file mode 100644
index e02f481..0000000
--- a/src/routes/+page.svelte
+++ /dev/null
@@ -1,160 +0,0 @@
-
-
-
-
-
-
-
- {#each commands as command}
-
-
- aj@rva $
- {command.text}
-
-
-
-
-
- {/each}
-
-
-{#if useAnimation}
-
- {#each commands.slice(0, completedCommandCount) as command}
-
-
- aj@rva $
- {command.text}
-
-
-
-
-
- {/each}
-
- {#if currentCommand}
-
- aj@rva $
- {currentCommand.text.slice(0, currentCommandIndex)}_
-
-
-
-
- {:else}
-
- aj@rva $
- _
-
- {/if}
-
-{/if}
-
-
diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx
new file mode 100644
index 0000000..373ea9f
--- /dev/null
+++ b/src/routes/__root.tsx
@@ -0,0 +1,28 @@
+import { createRootRoute, useRouterState } from "@tanstack/react-router";
+
+import { Shell } from "../components/Shell";
+
+export const Route = createRootRoute({
+ component: Root,
+});
+
+function Root() {
+ const title = useRouterState({
+ select: (state) => {
+ const loaderData = state.matches.at(-1)?.loaderData;
+
+ return hasShellTitle(loaderData) ? loaderData.title : "not-found";
+ },
+ });
+
+ return ;
+}
+
+function hasShellTitle(value: unknown): value is { title: string } {
+ return (
+ typeof value === "object" &&
+ value !== null &&
+ "title" in value &&
+ typeof value.title === "string"
+ );
+}
diff --git a/src/routes/about.tsx b/src/routes/about.tsx
new file mode 100644
index 0000000..bedd70f
--- /dev/null
+++ b/src/routes/about.tsx
@@ -0,0 +1,8 @@
+import { createFileRoute } from "@tanstack/react-router";
+
+import { About } from "../pages/About";
+
+export const Route = createFileRoute("/about")({
+ loader: () => ({ title: "about" }),
+ component: About,
+});
diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte
deleted file mode 100644
index 415e3a6..0000000
--- a/src/routes/about/+page.svelte
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/src/routes/api/post/[postId]/+server.ts b/src/routes/api/post/[postId]/+server.ts
deleted file mode 100644
index cc6fe2c..0000000
--- a/src/routes/api/post/[postId]/+server.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { render } from "svelte/server";
-import type { GetPostRequest, Post } from "$lib/types";
-import { json, type RequestHandler } from "@sveltejs/kit";
-import type { SvelteComponent } from "svelte";
-
-export const GET: RequestHandler = async ({
- params,
-}) => {
- const post: SvelteComponent> = await import(
- `../../../../lib/markdown/blog/${params.postId}.md`
- );
- return json({
- id: params.postId,
- metadata: post.metadata,
- content: render(post.default).body,
- });
-};
diff --git a/src/routes/api/posts/+server.ts b/src/routes/api/posts/+server.ts
deleted file mode 100644
index 82d0b9b..0000000
--- a/src/routes/api/posts/+server.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import path from "node:path";
-import type { GetPostsResponse, Post, PostPreview } from "$lib/types";
-import { json, type RequestHandler } from "@sveltejs/kit";
-
-// I love vite, this is so cool !?!?!?!
-const posts = import.meta.glob("$lib/markdown/blog/*.md");
-
-export const GET: RequestHandler = async () => {
- return json(
- await Promise.all(
- Object.entries(posts).map(async ([filePath, resolver]) => {
- const id = path.basename(filePath, path.extname(filePath));
- const post: Post = await resolver();
- return {
- id,
- metadata: post.metadata,
- };
- }),
- ),
- );
-};
diff --git a/src/routes/blog.tsx b/src/routes/blog.tsx
new file mode 100644
index 0000000..a9e8c3e
--- /dev/null
+++ b/src/routes/blog.tsx
@@ -0,0 +1,8 @@
+import { createFileRoute } from "@tanstack/react-router";
+
+import { Blog } from "../pages/Blog";
+
+export const Route = createFileRoute("/blog")({
+ loader: () => ({ title: "notes" }),
+ component: Blog,
+});
diff --git a/src/routes/blog/+layout.svelte b/src/routes/blog/+layout.svelte
deleted file mode 100644
index c57305c..0000000
--- a/src/routes/blog/+layout.svelte
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
- {#if isRoot}
-
-
Tags
- {#each sortedTags as tag}
-
- {tag} ({tags[tag].count})
-
- {/each}
-
- {/if}
-
- {@render children?.()}
-
-
diff --git a/src/routes/blog/+layout.ts b/src/routes/blog/+layout.ts
deleted file mode 100644
index b80d9b8..0000000
--- a/src/routes/blog/+layout.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import type { PostPreview } from "$lib/types";
-import type { LayoutLoad } from "./$types";
-
-export const load: LayoutLoad<{ posts: PostPreview[] }> = async ({ fetch }) => {
- const response = await fetch("/api/posts");
- const posts = await response.json();
-
- return {
- posts,
- };
-};
diff --git a/src/routes/blog/+page.svelte b/src/routes/blog/+page.svelte
deleted file mode 100644
index 0eaf323..0000000
--- a/src/routes/blog/+page.svelte
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
diff --git a/src/routes/blog/[postId]/+page.svelte b/src/routes/blog/[postId]/+page.svelte
deleted file mode 100644
index b2514e2..0000000
--- a/src/routes/blog/[postId]/+page.svelte
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-{post.metadata.title}
-{#if PostContent}
-
-{/if}
diff --git a/src/routes/blog/[postId]/+page.ts b/src/routes/blog/[postId]/+page.ts
deleted file mode 100644
index ca09561..0000000
--- a/src/routes/blog/[postId]/+page.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import type { Post } from "$lib/types";
-
-import type { PageLoad } from "./$types";
-
-export const load: PageLoad<{ post: Post }> = async ({ fetch, params }) => {
- const response = await fetch(`/api/post/${params.postId}`);
- const post = await response.json();
-
- return {
- post,
- };
-};
diff --git a/src/routes/blog_.$postId.tsx b/src/routes/blog_.$postId.tsx
new file mode 100644
index 0000000..a957e47
--- /dev/null
+++ b/src/routes/blog_.$postId.tsx
@@ -0,0 +1,27 @@
+import { createFileRoute } from "@tanstack/react-router";
+
+import { posts } from "../data";
+import { NotFound } from "../pages/NotFound";
+import { PostPage } from "../pages/PostPage";
+
+export const Route = createFileRoute("/blog_/$postId")({
+ loader: ({ params: { postId } }) => {
+ const post = posts.find((entry) => entry.id === postId);
+
+ return {
+ post,
+ title: post?.title.toLowerCase() ?? "not-found",
+ };
+ },
+ component: PostComponent,
+});
+
+function PostComponent() {
+ const { post } = Route.useLoaderData();
+
+ if (!post) {
+ return ;
+ }
+
+ return ;
+}
diff --git a/src/routes/index.tsx b/src/routes/index.tsx
new file mode 100644
index 0000000..182912e
--- /dev/null
+++ b/src/routes/index.tsx
@@ -0,0 +1,8 @@
+import { createFileRoute } from "@tanstack/react-router";
+
+import { Home } from "../pages/Home";
+
+export const Route = createFileRoute("/")({
+ loader: () => ({ title: "home" }),
+ component: Home,
+});
diff --git a/src/styles.css b/src/styles.css
new file mode 100644
index 0000000..f7f3119
--- /dev/null
+++ b/src/styles.css
@@ -0,0 +1,321 @@
+:root {
+ --bg: #f3f0e8;
+ --window: #fbfaf6;
+ --chrome: #e7e2d8;
+ --ink: #202020;
+ --muted: #66615a;
+ --faint: #8a8378;
+ --line: #d2cabd;
+ --prompt: #5b4b39;
+ --link: #7a3f16;
+}
+
+* {
+ box-sizing: border-box;
+}
+
+body {
+ margin: 0;
+ background: var(--bg);
+ color: var(--ink);
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
+ font-size: 13px;
+ line-height: 1.55;
+}
+
+a {
+ color: var(--link);
+ text-underline-offset: 0.2em;
+}
+
+.page {
+ width: min(780px, calc(100% - 28px));
+ margin: 0 auto;
+ padding: 20px 0 48px;
+}
+
+.site-header {
+ display: flex;
+ justify-content: space-between;
+ gap: 18px;
+ margin-bottom: 14px;
+ color: var(--muted);
+}
+
+.brand {
+ color: var(--ink);
+ font-weight: 700;
+ text-decoration: none;
+}
+
+nav {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ gap: 12px;
+}
+
+nav a {
+ color: var(--muted);
+ text-decoration: none;
+}
+
+nav a:hover,
+nav a:focus {
+ color: var(--link);
+ text-decoration: underline;
+}
+
+.window {
+ overflow: hidden;
+ border: 1px solid rgba(32, 32, 32, 0.16);
+ border-radius: 8px;
+ background: var(--window);
+ box-shadow: 0 12px 34px rgba(32, 32, 32, 0.08);
+}
+
+.bar {
+ display: flex;
+ align-items: center;
+ gap: 7px;
+ padding: 7px 10px;
+ border-bottom: 1px solid var(--line);
+ background: var(--chrome);
+ color: var(--muted);
+ font-size: 11px;
+}
+
+.dot {
+ width: 8px;
+ height: 8px;
+ border-radius: 999px;
+ background: #c96f62;
+}
+
+.dot:nth-child(2) {
+ background: #c5a35c;
+}
+
+.dot:nth-child(3) {
+ margin-right: 7px;
+ background: #8f9a83;
+}
+
+main {
+ padding: clamp(16px, 4vw, 30px);
+}
+
+.cmd {
+ margin: 22px 0 8px;
+ color: var(--prompt);
+ font-weight: 700;
+}
+
+.cmd:first-child {
+ margin-top: 0;
+}
+
+.output {
+ max-width: 72ch;
+ margin: 0 9ch 12px 7ch;
+ color: #2f2d2a;
+ font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
+ font-size: 1rem;
+ line-height: 1.62;
+}
+
+.output p {
+ margin: 0 0 0.85rem;
+}
+
+.muted,
+.lede {
+ color: var(--muted);
+}
+
+.notes {
+ display: grid;
+ gap: 0;
+ max-width: 72ch;
+ padding: 0;
+ margin: 0 9ch;
+ list-style: none;
+}
+
+.notes li {
+ padding: 11px 0;
+ border-top: 1px solid var(--line);
+}
+
+.notes li:first-child {
+ border-top: 0;
+ padding-top: 0;
+}
+
+.note-head {
+ display: flex;
+ justify-content: space-between;
+ gap: 12px;
+}
+
+.note-head a {
+ font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
+ font-size: 1rem;
+ font-weight: 700;
+}
+
+.tag {
+ color: var(--faint);
+ font-size: 11px;
+ white-space: nowrap;
+}
+
+.note-desc {
+ margin-top: 3px;
+ color: var(--muted);
+ font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
+ font-size: 0.98rem;
+}
+
+.family {
+ max-width: 72ch;
+ margin: 0 9ch;
+}
+
+.family img {
+ display: block;
+ width: min(240px, 100%);
+ height: auto;
+ margin: 0 auto 10px;
+ border: 1px solid var(--line);
+ border-radius: 8px;
+}
+
+.caption {
+ margin: 0;
+ color: var(--muted);
+ font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
+ font-size: 0.98rem;
+ text-align: center;
+}
+
+.socials {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ gap: 12px;
+ padding: 0;
+ margin: 0 9ch;
+ list-style: none;
+}
+
+.document h1 {
+ margin: 0 0 0.85rem;
+ font-size: 1.45rem;
+ line-height: 1.2;
+}
+
+.document pre {
+ overflow-x: auto;
+ padding: 12px;
+ border: 1px solid var(--line);
+ border-radius: 6px;
+ background: #f0ece2;
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
+ font-size: 0.85rem;
+}
+
+.document code {
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
+}
+
+.document :not(pre) > code {
+ padding: 0.08rem 0.24rem;
+ border: 1px solid color-mix(in srgb, var(--line), transparent 35%);
+ border-radius: 4px;
+ background: #f0ece2;
+ color: #5b4b39;
+ font-size: 0.88em;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: #777066;
+}
+
+.token.punctuation {
+ color: #5f5a52;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol {
+ color: #8a4c25;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #687447;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.token.variable {
+ color: #6b5b45;
+}
+
+.token.atrule,
+.token.attr-value,
+.token.function,
+.token.class-name {
+ color: #7a3f16;
+}
+
+.token.keyword {
+ color: #704978;
+}
+
+.token.regex,
+.token.important {
+ color: #9a5b2f;
+}
+
+@media (max-width: 640px) {
+ .page {
+ width: calc(100% - 16px);
+ padding-top: 10px;
+ }
+
+ .site-header,
+ .note-head {
+ display: block;
+ }
+
+ nav {
+ justify-content: flex-start;
+ margin-top: 8px;
+ }
+
+ .output,
+ .notes,
+ .family,
+ .socials {
+ margin-right: 0;
+ margin-left: 0;
+ }
+
+ .tag {
+ display: block;
+ margin-top: 2px;
+ }
+}
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
new file mode 100644
index 0000000..211ae17
--- /dev/null
+++ b/src/vite-env.d.ts
@@ -0,0 +1,8 @@
+///
+
+declare module "*.md" {
+ const attributes: Record;
+ const html: string;
+
+ export { attributes, html };
+}
diff --git a/static/favicon.png b/static/favicon.png
deleted file mode 100644
index 290394c..0000000
Binary files a/static/favicon.png and /dev/null differ
diff --git a/svelte.config.js b/svelte.config.js
deleted file mode 100644
index 8942347..0000000
--- a/svelte.config.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import adapter from "@sveltejs/adapter-static";
-import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
-import { mdsvex } from "mdsvex";
-
-/** @type {import('@sveltejs/kit').Config} */
-const config = {
- extensions: [".svelte", ".md"],
- preprocess: [
- vitePreprocess(),
- mdsvex({
- extensions: [".md"],
- highlight: {
- alias: { yavascript: "javascript" },
- },
- }),
- ],
- kit: {
- adapter: adapter({
- pages: "public",
- assets: "public",
- fallback: false,
- precompress: false,
- }),
- alias: {
- $lib: "./src/lib",
- },
- },
-};
-
-export default config;
diff --git a/tailwind.config.mjs b/tailwind.config.mjs
deleted file mode 100644
index cdf0841..0000000
--- a/tailwind.config.mjs
+++ /dev/null
@@ -1,12 +0,0 @@
-export default {
- content: ["./src/**/*.{html,js,svelte,ts}"],
- theme: {
- extend: {
- spacing: {
- "3xl": "48rem",
- "4xl": "56rem",
- },
- },
- plugins: [],
- },
-};
diff --git a/tests/about.spec.ts b/tests/about.spec.ts
index f6ecb92..1c32708 100644
--- a/tests/about.spec.ts
+++ b/tests/about.spec.ts
@@ -1,12 +1,10 @@
-import { test, expect } from "@playwright/test";
+import { expect, test } from "@playwright/test";
-test.beforeEach(async ({ page }) => {
+test("about page renders markdown content", async ({ page }) => {
await page.goto("/about");
-});
-test("the about page renders", async ({ page }) => {
- const target = page
- .getByText("Hey, there! Thanks for checking out my site.")
- .first();
- await expect(target).toBeVisible();
+ await expect(page.getByRole("heading", { name: "About Me" })).toBeVisible();
+ await expect(
+ page.getByText("Hey, there! Thanks for checking out my site.").first(),
+ ).toBeVisible();
});
diff --git a/tests/blog-entry.spec.ts b/tests/blog-entry.spec.ts
index ae9c49c..2def484 100644
--- a/tests/blog-entry.spec.ts
+++ b/tests/blog-entry.spec.ts
@@ -1,30 +1,14 @@
-import { test, expect } from "@playwright/test";
+import { expect, test } from "@playwright/test";
-test("blog entries render correctly", async ({ page }) => {
- await page.goto("/blog/2-another-post/");
+test("blog entries render markdown content", async ({ page }) => {
+ await page.goto("/blog/2-another-post");
- await expect(
- page.getByRole("heading", { name: "Just Messin' Around" }),
- ).toBeVisible();
- await expect(
- page.getByText("This is really just here for testing purposes"),
- ).toBeVisible();
+ await expect(page.getByRole("heading", { name: "Just Messin' Around" })).toBeVisible();
+ await expect(page.getByText("This is really just here for testing purposes")).toBeVisible();
});
-test("blog entries include prerendered content without JavaScript", async ({
- browser,
- baseURL,
-}) => {
- const context = await browser.newContext({ javaScriptEnabled: false });
- const page = await context.newPage();
+test("code blocks are syntax highlighted", async ({ page }) => {
+ await page.goto("/blog/1-building-this-site");
- await page.goto(`${baseURL}/blog/2-another-post/`);
- await expect(
- page.getByRole("heading", { name: "Just Messin' Around" }),
- ).toBeVisible();
- await expect(
- page.getByText("This is really just here for testing purposes"),
- ).toBeVisible();
-
- await context.close();
+ await expect(page.locator("pre code .token.function").first()).toBeVisible();
});
diff --git a/tests/blog.spec.ts b/tests/blog.spec.ts
index b4699a1..c6c3d4d 100644
--- a/tests/blog.spec.ts
+++ b/tests/blog.spec.ts
@@ -1,51 +1,18 @@
-import { test, expect } from "@playwright/test";
+import { expect, test } from "@playwright/test";
test.beforeEach(async ({ page }) => {
- await page.goto("/blog/");
+ await page.goto("/blog");
});
-test("the Posts heading exists and has the appropriate aria role and level", async ({
- page,
-}) => {
- // @ts-expect-error not great types here
- const heading = page.getByRole("heading[level=1]");
- expect(heading).toBeVisible();
- expect(await heading.textContent()).toEqual("Posts");
+test("blog post list renders", async ({ page }) => {
+ await expect(page.getByRole("link", { name: "Building This Site" })).toBeVisible();
+ await expect(page.getByRole("link", { name: "Just Messin' Around" })).toBeVisible();
+ await expect(page.getByText("A peek into the technologies which power this site")).toBeVisible();
});
-test("the post titles and previews render correctly and have appropriate aria roles and levels", async ({
- page,
-}) => {
- const heading = page.getByTestId("post-title").first();
- expect(heading).toBeVisible();
- expect(
- await (await heading.elementHandle())?.evaluate((e) => e.tagName),
- ).toEqual("H2");
+test("blog navigation works", async ({ page, baseURL }) => {
+ await page.getByRole("link", { name: "Just Messin' Around" }).click();
- const preview = page.getByTestId("post-description").first();
- expect(preview).toBeVisible();
- expect(
- await (await preview.elementHandle())?.evaluate((e) => e.tagName),
- ).toEqual("P");
-});
-
-test("the tags column renders correctly", async ({ page }) => {
- const tags = page.getByRole("button");
- const tagStrings = await tags.allTextContents();
- tagStrings
- .filter((tag) => tag)
- .forEach((tagString) => {
- expect(tagString).toMatch(/.+ \(\d+\)/);
- });
-});
-
-test("filtering by tags works", async ({ page }) => {
- const tag = page.getByRole("button").filter({ hasText: "something else" });
- const before = await page.getByRole("heading").count();
-
- await expect(tag).toBeVisible();
- await tag.click();
-
- const after = await page.getByRole("heading").count();
- expect(after).toBeLessThan(before);
+ await expect(page).toHaveURL(new RegExp(`^${baseURL}/blog/2-another-post/?$`));
+ await expect(page.getByRole("heading", { name: "Just Messin' Around" })).toBeVisible();
});
diff --git a/tests/hi.spec.ts b/tests/hi.spec.ts
deleted file mode 100644
index 4dea919..0000000
--- a/tests/hi.spec.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { test, expect } from "@playwright/test";
-
-test.beforeEach(async ({ page }) => {
- await page.goto("/");
-});
-
-test("first paragraph shows up", async ({ page }) => {
- const target = page.locator("p:visible", { hasText: "Hey!" }).first();
- await expect(target).toBeVisible();
-});
-
-test("second paragraph shows up", async ({ page }) => {
- const target = page
- .locator("p:visible", {
- hasText: "This is my little corner of the internet",
- })
- .first();
- await expect(target).toBeVisible();
-});
-
-test("photo shows up", async ({ page }) => {
- const text = page
- .locator("p:visible", {
- hasText: "picture of me, my wife, and all my pets",
- })
- .first();
- const image = page
- .locator('img[alt="me, my wife, dog, and two cats"]:visible')
- .first();
-
- await expect(text).toBeVisible({ timeout: 10000 });
- await expect(image).toBeVisible();
-});
-
-test.describe("without JavaScript", () => {
- test.use({ javaScriptEnabled: false });
-
- test("home content is visible", async ({ page }) => {
- await expect(page.getByTestId("home-content")).toBeVisible();
- await expect(page.getByText("Hey!").first()).toBeVisible();
- await expect(
- page.getByText("This is my little corner of the internet").first(),
- ).toBeVisible();
- await expect(
- page.getByAltText("me, my wife, dog, and two cats"),
- ).toBeVisible();
- });
-});
diff --git a/tests/home.spec.ts b/tests/home.spec.ts
new file mode 100644
index 0000000..fb7ecbe
--- /dev/null
+++ b/tests/home.spec.ts
@@ -0,0 +1,17 @@
+import { expect, test } from "@playwright/test";
+
+test.beforeEach(async ({ page }) => {
+ await page.goto("/");
+});
+
+test("home introduction renders", async ({ page }) => {
+ await expect(page.getByText("Hey! I'm AJ").first()).toBeVisible();
+ await expect(page.getByText("This is my little corner of the internet").first()).toBeVisible();
+});
+
+test("photo and social links render", async ({ page }) => {
+ await expect(page.getByAltText("me, my wife, dog, and two cats")).toBeVisible();
+ await expect(page.getByRole("link", { name: "GitHub" })).toBeVisible();
+ await expect(page.getByRole("link", { name: "LinkedIn" })).toBeVisible();
+ await expect(page.getByRole("link", { name: "npm" })).toBeVisible();
+});
diff --git a/tests/layout.spec.ts b/tests/layout.spec.ts
index 7ba6d9d..dbf096d 100644
--- a/tests/layout.spec.ts
+++ b/tests/layout.spec.ts
@@ -1,99 +1,38 @@
-import { test, expect } from "@playwright/test";
+import { expect, test } from "@playwright/test";
test.beforeEach(async ({ page }) => {
await page.goto("/");
});
-test("header links show up", async ({ page, isMobile }) => {
- if (isMobile) {
- await page.getByTestId("menu-button").click();
- }
- await expect(
- page.getByRole("link").filter({ hasText: "Hi 👋" }),
- ).toBeVisible();
- await expect(
- page.getByRole("link").filter({ hasText: "About 📕" }),
- ).toBeVisible();
- await expect(
- page.getByRole("link").filter({ hasText: "Blog ✍️" }),
- ).toBeVisible();
- await expect(
- page.getByRole("link").filter({ hasText: "Hire Me 💲" }),
- ).toBeVisible();
+test("header links render", async ({ page }) => {
+ await expect(page.getByRole("link", { name: "AJ Bienz" })).toBeVisible();
+ await expect(page.getByRole("link", { name: "about" })).toBeVisible();
+ await expect(page.getByRole("link", { name: "notes" })).toBeVisible();
+ await expect(page.getByRole("link", { name: "rss" })).toBeVisible();
});
-test("footer links show up", async ({ page }) => {
- await expect(
- page.getByRole("paragraph").filter({ hasText: "AJ Bienz" }),
- ).toBeVisible();
- await expect(page.getByTestId("gh-link")).toBeVisible();
- await expect(page.getByTestId("npm-link")).toBeVisible();
- await expect(page.getByTestId("linkedin-link")).toBeVisible();
-});
-
-test.describe("header navigation", () => {
- test.beforeEach(async ({ page, isMobile }) => {
- if (isMobile) {
- await page.getByTestId("menu-button").click();
- }
- });
-
- test("about link", async ({ page, baseURL }) => {
- await Promise.all([
- page.getByRole("link").filter({ hasText: "About 📕" }).click(),
- ]);
- await expect(page).toHaveURL(new RegExp(`^${baseURL}/about/$`));
- });
-
- test("blog link", async ({ page, baseURL }) => {
- await Promise.all([
- page.getByRole("link").filter({ hasText: "Blog ✍️" }).click(),
- page.waitForURL(`${baseURL}/blog/`),
- ]);
- await expect(page).toHaveURL(new RegExp(`^${baseURL}/blog/$`));
- });
-
- test("home link", async ({ page, baseURL }) => {
- await Promise.all([
- page.getByRole("link").filter({ hasText: "Hi 👋" }).click(),
- ]);
- await expect(page).toHaveURL(new RegExp(`^${baseURL}/?$`));
- });
-
- test("resume link", async ({ page }) => {
- const resumeLink = page.getByRole("link").filter({ hasText: "Hire Me 💲" });
+test("header navigation works", async ({ page, baseURL }) => {
+ await page.getByRole("link", { name: "about" }).click();
+ await expect(page).toHaveURL(new RegExp(`^${baseURL}/about/?$`));
- await expect(resumeLink).toHaveAttribute(
- "href",
- "https://youtu.be/dQw4w9WgXcQ",
- );
-
- await resumeLink.click();
- await expect(page).toHaveURL(
- /^https:\/\/([^/]+\.)?(youtube\.com|youtu\.be)\//,
- );
- });
-});
-
-test("blog navigation works", async ({ page, baseURL }) => {
- await page.goto("/blog/");
- await Promise.all([page.getByRole("heading", { level: 2 }).first().click()]);
- await expect(page).toHaveURL(new RegExp(`^${baseURL}/blog/.+/$`));
-});
-
-test("github navigation works", async ({ page }) => {
- await Promise.all([page.getByTestId("gh-link").click()]);
- await expect(page).toHaveURL("https://github.com/bienzaaron");
-});
+ await page.getByRole("link", { name: "notes" }).click();
+ await expect(page).toHaveURL(new RegExp(`^${baseURL}/blog/?$`));
-test("npm navigation works", async ({ page }) => {
- await Promise.all([page.getByTestId("npm-link").click()]);
- await expect(page).toHaveURL("https://www.npmjs.com/~ajbienz");
+ await page.getByRole("link", { name: "AJ Bienz" }).click();
+ await expect(page).toHaveURL(new RegExp(`^${baseURL}/?$`));
});
-test("linkedin navigation works", async ({ page }) => {
- const navigationPromise = page.waitForURL(/linkedin\.com/);
- await page.getByTestId("linkedin-link").click();
- await navigationPromise;
- expect(page.url()).toEqual("https://www.linkedin.com/in/abienz");
+test("external social links point to the right destinations", async ({ page }) => {
+ await expect(page.getByRole("link", { name: "GitHub" })).toHaveAttribute(
+ "href",
+ "https://github.com/bienzaaron",
+ );
+ await expect(page.getByRole("link", { name: "LinkedIn" })).toHaveAttribute(
+ "href",
+ "https://www.linkedin.com/in/abienz",
+ );
+ await expect(page.getByRole("link", { name: "npm" })).toHaveAttribute(
+ "href",
+ "https://www.npmjs.com/~ajbienz",
+ );
});
diff --git a/tsconfig.json b/tsconfig.json
index 8eb74e5..1553004 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,20 @@
{
- "extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
- "allowSyntheticDefaultImports": true
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "allowJs": false,
+ "skipLibCheck": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx"
},
- "include": ["src/**/*"]
+ "include": ["src", "vite.config.ts"]
}
diff --git a/tsconfig.node.json b/tsconfig.node.json
deleted file mode 100644
index c07a8e5..0000000
--- a/tsconfig.node.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "skipLibCheck": true,
- "module": "ESNext",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "types": ["@playwright/test"]
- },
- "include": [
- "tests/**/*",
- "playwright.config.ts",
- "vite.config.ts",
- "eslint.config.js",
- "postcss.config.mjs"
- ]
-}
diff --git a/vercel.json b/vercel.json
index 1e9c7bc..fe6ea1b 100644
--- a/vercel.json
+++ b/vercel.json
@@ -1,3 +1,12 @@
{
+ "buildCommand": "pnpm run build",
+ "installCommand": "pnpm install --frozen-lockfile",
+ "outputDirectory": "dist",
+ "rewrites": [
+ {
+ "source": "/(.*)",
+ "destination": "/index.html"
+ }
+ ],
"trailingSlash": true
}
diff --git a/vite.config.ts b/vite.config.ts
index cd533d5..bf4b0d3 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,9 +1,40 @@
-import { sveltekit } from "@sveltejs/kit/vite";
-import type { UserConfig } from "vite";
-import tailwindcss from "@tailwindcss/vite";
+import { tanstackRouter } from "@tanstack/router-plugin/vite";
+import react from "@vitejs/plugin-react";
+import { defineConfig } from "vite";
+import MarkdownIt from "markdown-it";
+import Prism from "prismjs";
+import "prismjs/components/prism-bash";
+import "prismjs/components/prism-css";
+import "prismjs/components/prism-javascript";
+import "prismjs/components/prism-typescript";
+import { Mode, plugin as mdPlugin } from "vite-plugin-markdown";
-const config: UserConfig = {
- plugins: [sveltekit(), tailwindcss()],
-};
+const markdownUtils = new MarkdownIt().utils;
+const markdownIt: MarkdownIt = new MarkdownIt({
+ html: false,
+ linkify: true,
+ typographer: true,
+ highlight(code: string, lang: string): string {
+ const grammar = lang ? Prism.languages[lang] : undefined;
-export default config;
+ if (!grammar || !lang) {
+ return markdownUtils.escapeHtml(code);
+ }
+
+ return Prism.highlight(code, grammar, lang);
+ },
+});
+
+export default defineConfig({
+ plugins: [
+ mdPlugin({
+ mode: [Mode.HTML],
+ markdownIt,
+ }),
+ tanstackRouter({
+ target: "react",
+ autoCodeSplitting: true,
+ }),
+ react(),
+ ],
+});