social bookmarking for atproto

[frontend] add prettier, eslint

hexmani.ac 867db5b8 2b70c6f8

verified
+1601 -351
+2
frontend/.prettierignore
··· 1 + pnpm-lock.yaml 2 + dist/*
+31
frontend/.prettierrc
··· 1 + { 2 + "trailingComma": "all", 3 + "useTabs": true, 4 + "tabWidth": 2, 5 + "printWidth": 80, 6 + "semi": true, 7 + "singleQuote": false, 8 + "bracketSpacing": true, 9 + "plugins": ["prettier-plugin-astro"], 10 + "overrides": [ 11 + { 12 + "files": ["tsconfig.json", "jsconfig.json"], 13 + "options": { 14 + "parser": "jsonc" 15 + } 16 + }, 17 + { 18 + "files": ["*.md"], 19 + "options": { 20 + "printWidth": 100, 21 + "proseWrap": "always" 22 + } 23 + }, 24 + { 25 + "files": "*.astro", 26 + "options": { 27 + "parser": "astro" 28 + } 29 + } 30 + ] 31 + }
+2 -2
frontend/.vscode/extensions.json
··· 1 1 { 2 - "recommendations": ["astro-build.astro-vscode"], 3 - "unwantedRecommendations": [] 2 + "recommendations": ["astro-build.astro-vscode"], 3 + "unwantedRecommendations": [] 4 4 }
+9 -9
frontend/.vscode/launch.json
··· 1 1 { 2 - "version": "0.2.0", 3 - "configurations": [ 4 - { 5 - "command": "./node_modules/.bin/astro dev", 6 - "name": "Development server", 7 - "request": "launch", 8 - "type": "node-terminal" 9 - } 10 - ] 2 + "version": "0.2.0", 3 + "configurations": [ 4 + { 5 + "command": "./node_modules/.bin/astro dev", 6 + "name": "Development server", 7 + "request": "launch", 8 + "type": "node-terminal" 9 + } 10 + ] 11 11 }
+3 -1
frontend/README.md
··· 1 1 # @clipprjs/client 2 + 2 3 astro-based reference frontend for clippr, meant to use as little javascript as possible 3 4 4 5 ## run 6 + 5 7 ```bash 6 8 pnpm install 7 9 pnpm run dev 8 10 # pnpm run build 9 - ``` 11 + ```
+1 -1
frontend/astro.config.ts
··· 5 5 */ 6 6 7 7 // @ts-check 8 - import { defineConfig } from 'astro/config'; 8 + import { defineConfig } from "astro/config"; 9 9 10 10 // https://astro.build/config 11 11 export default defineConfig({});
+20
frontend/eslint.config.ts
··· 1 + /* 2 + * clippr: a social bookmarking service for the AT Protocol 3 + * Copyright (c) 2025 clippr contributors. 4 + * SPDX-License-Identifier: AGPL-3.0-only 5 + */ 6 + 7 + // @ts-check 8 + 9 + import eslint from "@eslint/js"; 10 + import tseslint from "typescript-eslint"; 11 + import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; 12 + import eslintPluginAstro from "eslint-plugin-astro"; 13 + 14 + export default tseslint.config( 15 + eslintPluginPrettierRecommended, 16 + tseslint.configs.recommended, 17 + tseslint.configs.stylistic, 18 + eslint.configs.recommended, 19 + eslintPluginAstro.configs.recommended, 20 + );
+33 -17
frontend/package.json
··· 1 1 { 2 - "name": "@clipprjs/client", 3 - "type": "module", 4 - "version": "0.1.0", 5 - "scripts": { 6 - "dev": "astro dev", 7 - "build": "astro build", 8 - "preview": "astro preview", 9 - "astro": "astro" 10 - }, 11 - "dependencies": { 12 - "@atcute/oauth-browser-client": "^1.0.26", 13 - "astro": "^5.12.3" 14 - }, 15 - "devDependencies": { 16 - "typescript": "^5.8.3" 17 - } 18 - } 2 + "name": "@clipprjs/client", 3 + "type": "module", 4 + "version": "0.1.0", 5 + "scripts": { 6 + "dev": "astro dev", 7 + "build": "astro build", 8 + "preview": "astro preview", 9 + "astro": "astro", 10 + "lint": "pnpm exec eslint .", 11 + "lint-write": "pnpm exec eslint . --fix", 12 + "fmt": "pnpm exec prettier --write ." 13 + }, 14 + "dependencies": { 15 + "@atcute/oauth-browser-client": "^1.0.26", 16 + "astro": "^5.12.3" 17 + }, 18 + "devDependencies": { 19 + "@eslint/eslintrc": "^3.3.1", 20 + "@eslint/js": "^9.32.0", 21 + "@typescript-eslint/eslint-plugin": "^8.38.0", 22 + "@typescript-eslint/parser": "^8.38.0", 23 + "eslint": "^9.32.0", 24 + "eslint-config-prettier": "^10.1.8", 25 + "eslint-plugin-astro": "^1.3.1", 26 + "eslint-plugin-prettier": "^5.5.3", 27 + "globals": "^16.3.0", 28 + "jiti": "^2.5.1", 29 + "prettier": "^3.6.2", 30 + "prettier-plugin-astro": "0.14.1", 31 + "typescript": "^5.8.3", 32 + "typescript-eslint": "^8.38.0" 33 + } 34 + }
+1159 -10
frontend/pnpm-lock.yaml
··· 13 13 version: 1.0.26 14 14 astro: 15 15 specifier: ^5.12.3 16 - version: 5.12.3(@types/node@24.1.0)(rollup@4.45.3)(typescript@5.8.3) 16 + version: 5.12.3(@types/node@24.1.0)(jiti@2.5.1)(rollup@4.45.3)(typescript@5.8.3) 17 17 devDependencies: 18 + '@eslint/eslintrc': 19 + specifier: ^3.3.1 20 + version: 3.3.1 21 + '@eslint/js': 22 + specifier: ^9.32.0 23 + version: 9.32.0 24 + '@typescript-eslint/eslint-plugin': 25 + specifier: ^8.38.0 26 + version: 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 27 + '@typescript-eslint/parser': 28 + specifier: ^8.38.0 29 + version: 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 30 + eslint: 31 + specifier: ^9.32.0 32 + version: 9.32.0(jiti@2.5.1) 33 + eslint-config-prettier: 34 + specifier: ^10.1.8 35 + version: 10.1.8(eslint@9.32.0(jiti@2.5.1)) 36 + eslint-plugin-astro: 37 + specifier: ^1.3.1 38 + version: 1.3.1(eslint@9.32.0(jiti@2.5.1)) 39 + eslint-plugin-prettier: 40 + specifier: ^5.5.3 41 + version: 5.5.3(eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1))(prettier@3.6.2) 42 + globals: 43 + specifier: ^16.3.0 44 + version: 16.3.0 45 + jiti: 46 + specifier: ^2.5.1 47 + version: 2.5.1 48 + prettier: 49 + specifier: ^3.6.2 50 + version: 3.6.2 51 + prettier-plugin-astro: 52 + specifier: 0.14.1 53 + version: 0.14.1 18 54 typescript: 19 55 specifier: ^5.8.3 20 56 version: 5.8.3 57 + typescript-eslint: 58 + specifier: ^8.38.0 59 + version: 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 21 60 22 61 packages: 23 62 ··· 239 278 cpu: [x64] 240 279 os: [win32] 241 280 281 + '@eslint-community/eslint-utils@4.7.0': 282 + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 283 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 284 + peerDependencies: 285 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 286 + 287 + '@eslint-community/regexpp@4.12.1': 288 + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 289 + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 290 + 291 + '@eslint/config-array@0.21.0': 292 + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} 293 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 294 + 295 + '@eslint/config-helpers@0.3.0': 296 + resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} 297 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 298 + 299 + '@eslint/core@0.15.1': 300 + resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} 301 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 302 + 303 + '@eslint/eslintrc@3.3.1': 304 + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 305 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 306 + 307 + '@eslint/js@9.32.0': 308 + resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} 309 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 310 + 311 + '@eslint/object-schema@2.1.6': 312 + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 313 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 314 + 315 + '@eslint/plugin-kit@0.3.4': 316 + resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} 317 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 318 + 319 + '@humanfs/core@0.19.1': 320 + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 321 + engines: {node: '>=18.18.0'} 322 + 323 + '@humanfs/node@0.16.6': 324 + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 325 + engines: {node: '>=18.18.0'} 326 + 327 + '@humanwhocodes/module-importer@1.0.1': 328 + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 329 + engines: {node: '>=12.22'} 330 + 331 + '@humanwhocodes/retry@0.3.1': 332 + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 333 + engines: {node: '>=18.18'} 334 + 335 + '@humanwhocodes/retry@0.4.3': 336 + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 337 + engines: {node: '>=18.18'} 338 + 242 339 '@img/sharp-darwin-arm64@0.33.5': 243 340 resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 244 341 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} ··· 346 443 347 444 '@jridgewell/sourcemap-codec@1.5.4': 348 445 resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} 446 + 447 + '@nodelib/fs.scandir@2.1.5': 448 + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 449 + engines: {node: '>= 8'} 450 + 451 + '@nodelib/fs.stat@2.0.5': 452 + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 453 + engines: {node: '>= 8'} 454 + 455 + '@nodelib/fs.walk@1.2.8': 456 + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 457 + engines: {node: '>= 8'} 349 458 350 459 '@oslojs/encoding@1.1.0': 351 460 resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} 352 461 462 + '@pkgr/core@0.2.9': 463 + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} 464 + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 465 + 353 466 '@rollup/pluginutils@5.2.0': 354 467 resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} 355 468 engines: {node: '>=14.0.0'} ··· 495 608 '@types/hast@3.0.4': 496 609 resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} 497 610 611 + '@types/json-schema@7.0.15': 612 + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 613 + 498 614 '@types/mdast@4.0.4': 499 615 resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} 500 616 ··· 510 626 '@types/unist@3.0.3': 511 627 resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} 512 628 629 + '@typescript-eslint/eslint-plugin@8.38.0': 630 + resolution: {integrity: sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA==} 631 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 632 + peerDependencies: 633 + '@typescript-eslint/parser': ^8.38.0 634 + eslint: ^8.57.0 || ^9.0.0 635 + typescript: '>=4.8.4 <5.9.0' 636 + 637 + '@typescript-eslint/parser@8.38.0': 638 + resolution: {integrity: sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ==} 639 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 640 + peerDependencies: 641 + eslint: ^8.57.0 || ^9.0.0 642 + typescript: '>=4.8.4 <5.9.0' 643 + 644 + '@typescript-eslint/project-service@8.38.0': 645 + resolution: {integrity: sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==} 646 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 647 + peerDependencies: 648 + typescript: '>=4.8.4 <5.9.0' 649 + 650 + '@typescript-eslint/scope-manager@8.38.0': 651 + resolution: {integrity: sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==} 652 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 653 + 654 + '@typescript-eslint/tsconfig-utils@8.38.0': 655 + resolution: {integrity: sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==} 656 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 657 + peerDependencies: 658 + typescript: '>=4.8.4 <5.9.0' 659 + 660 + '@typescript-eslint/type-utils@8.38.0': 661 + resolution: {integrity: sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg==} 662 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 663 + peerDependencies: 664 + eslint: ^8.57.0 || ^9.0.0 665 + typescript: '>=4.8.4 <5.9.0' 666 + 667 + '@typescript-eslint/types@8.38.0': 668 + resolution: {integrity: sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==} 669 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 670 + 671 + '@typescript-eslint/typescript-estree@8.38.0': 672 + resolution: {integrity: sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==} 673 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 674 + peerDependencies: 675 + typescript: '>=4.8.4 <5.9.0' 676 + 677 + '@typescript-eslint/utils@8.38.0': 678 + resolution: {integrity: sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==} 679 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 680 + peerDependencies: 681 + eslint: ^8.57.0 || ^9.0.0 682 + typescript: '>=4.8.4 <5.9.0' 683 + 684 + '@typescript-eslint/visitor-keys@8.38.0': 685 + resolution: {integrity: sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==} 686 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 687 + 513 688 '@ungap/structured-clone@1.3.0': 514 689 resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} 515 690 691 + acorn-jsx@5.3.2: 692 + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 693 + peerDependencies: 694 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 695 + 516 696 acorn@8.15.0: 517 697 resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 518 698 engines: {node: '>=0.4.0'} 519 699 hasBin: true 520 700 701 + ajv@6.12.6: 702 + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 703 + 521 704 ansi-align@3.0.1: 522 705 resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} 523 706 ··· 528 711 ansi-regex@6.1.0: 529 712 resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 530 713 engines: {node: '>=12'} 714 + 715 + ansi-styles@4.3.0: 716 + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 717 + engines: {node: '>=8'} 531 718 532 719 ansi-styles@6.2.1: 533 720 resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} ··· 546 733 547 734 array-iterate@2.0.1: 548 735 resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} 736 + 737 + astro-eslint-parser@1.2.2: 738 + resolution: {integrity: sha512-JepyLROIad6f44uyqMF6HKE2QbunNzp3mYKRcPoDGt0QkxXmH222FAFC64WTyQu2Kg8NNEXHTN/sWuUId9sSxw==} 739 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 549 740 550 741 astro@5.12.3: 551 742 resolution: {integrity: sha512-fU1hNPMkccm+FuonGsY5DFkC2QyuLCju++8L2ubzBtYBDBf6bmfgmVM7A2dK+Hl+ZJCUNgepsClhBpczj+2LRw==} 552 743 engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} 553 744 hasBin: true 554 745 746 + astrojs-compiler-sync@1.1.1: 747 + resolution: {integrity: sha512-0mKvB9sDQRIZPsEJadw6OaFbGJ92cJPPR++ICca9XEyiUAZqgVuk25jNmzHPT0KF80rI94trSZrUR5iHFXGGOQ==} 748 + engines: {node: ^18.18.0 || >=20.9.0} 749 + peerDependencies: 750 + '@astrojs/compiler': '>=0.27.0' 751 + 555 752 axobject-query@4.1.0: 556 753 resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 557 754 engines: {node: '>= 0.4'} 558 755 559 756 bail@2.0.2: 560 757 resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} 758 + 759 + balanced-match@1.0.2: 760 + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 561 761 562 762 base-64@1.0.0: 563 763 resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} ··· 572 772 resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} 573 773 engines: {node: '>=18'} 574 774 775 + brace-expansion@1.1.12: 776 + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 777 + 778 + brace-expansion@2.0.2: 779 + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 780 + 781 + braces@3.0.3: 782 + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 783 + engines: {node: '>=8'} 784 + 575 785 brotli@1.3.3: 576 786 resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} 787 + 788 + callsites@3.1.0: 789 + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 790 + engines: {node: '>=6'} 577 791 578 792 camelcase@8.0.0: 579 793 resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} ··· 581 795 582 796 ccount@2.0.1: 583 797 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 798 + 799 + chalk@4.1.2: 800 + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 801 + engines: {node: '>=10'} 584 802 585 803 chalk@5.4.1: 586 804 resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} ··· 635 853 common-ancestor-path@1.0.1: 636 854 resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} 637 855 856 + concat-map@0.0.1: 857 + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 858 + 638 859 cookie-es@1.2.2: 639 860 resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} 640 861 ··· 644 865 645 866 cross-fetch@3.2.0: 646 867 resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} 868 + 869 + cross-spawn@7.0.6: 870 + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 871 + engines: {node: '>= 8'} 647 872 648 873 crossws@0.3.5: 649 874 resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} ··· 668 893 669 894 decode-named-character-reference@1.2.0: 670 895 resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} 896 + 897 + deep-is@0.1.4: 898 + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 671 899 672 900 defu@6.1.4: 673 901 resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} ··· 725 953 engines: {node: '>=18'} 726 954 hasBin: true 727 955 956 + escape-string-regexp@4.0.0: 957 + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 958 + engines: {node: '>=10'} 959 + 728 960 escape-string-regexp@5.0.0: 729 961 resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 730 962 engines: {node: '>=12'} 731 963 964 + eslint-compat-utils@0.6.5: 965 + resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} 966 + engines: {node: '>=12'} 967 + peerDependencies: 968 + eslint: '>=6.0.0' 969 + 970 + eslint-config-prettier@10.1.8: 971 + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} 972 + hasBin: true 973 + peerDependencies: 974 + eslint: '>=7.0.0' 975 + 976 + eslint-plugin-astro@1.3.1: 977 + resolution: {integrity: sha512-2XaLCMQm8htW1UvJvy1Zcmg8l0ziskitiUfJTn/w1Mk7r4Mxj0fZeNpN6UTNrm64XBIXSa5h8UCGrg8mdu47+g==} 978 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 979 + peerDependencies: 980 + eslint: '>=8.57.0' 981 + 982 + eslint-plugin-prettier@5.5.3: 983 + resolution: {integrity: sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w==} 984 + engines: {node: ^14.18.0 || >=16.0.0} 985 + peerDependencies: 986 + '@types/eslint': '>=8.0.0' 987 + eslint: '>=8.0.0' 988 + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' 989 + prettier: '>=3.0.0' 990 + peerDependenciesMeta: 991 + '@types/eslint': 992 + optional: true 993 + eslint-config-prettier: 994 + optional: true 995 + 996 + eslint-scope@8.4.0: 997 + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 998 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 999 + 1000 + eslint-visitor-keys@3.4.3: 1001 + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1002 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1003 + 1004 + eslint-visitor-keys@4.2.1: 1005 + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 1006 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1007 + 1008 + eslint@9.32.0: 1009 + resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} 1010 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1011 + hasBin: true 1012 + peerDependencies: 1013 + jiti: '*' 1014 + peerDependenciesMeta: 1015 + jiti: 1016 + optional: true 1017 + 732 1018 esm-env@1.2.2: 733 1019 resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} 734 1020 1021 + espree@10.4.0: 1022 + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 1023 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1024 + 1025 + esquery@1.6.0: 1026 + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1027 + engines: {node: '>=0.10'} 1028 + 1029 + esrecurse@4.3.0: 1030 + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1031 + engines: {node: '>=4.0'} 1032 + 1033 + estraverse@5.3.0: 1034 + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1035 + engines: {node: '>=4.0'} 1036 + 735 1037 estree-walker@2.0.2: 736 1038 resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 737 1039 738 1040 estree-walker@3.0.3: 739 1041 resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1042 + 1043 + esutils@2.0.3: 1044 + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1045 + engines: {node: '>=0.10.0'} 740 1046 741 1047 eventemitter3@5.0.1: 742 1048 resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} ··· 747 1053 fast-deep-equal@3.1.3: 748 1054 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 749 1055 1056 + fast-diff@1.3.0: 1057 + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 1058 + 1059 + fast-glob@3.3.3: 1060 + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1061 + engines: {node: '>=8.6.0'} 1062 + 1063 + fast-json-stable-stringify@2.1.0: 1064 + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1065 + 1066 + fast-levenshtein@2.0.6: 1067 + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1068 + 1069 + fastq@1.19.1: 1070 + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1071 + 750 1072 fdir@6.4.6: 751 1073 resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} 752 1074 peerDependencies: ··· 755 1077 picomatch: 756 1078 optional: true 757 1079 1080 + file-entry-cache@8.0.0: 1081 + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1082 + engines: {node: '>=16.0.0'} 1083 + 1084 + fill-range@7.1.1: 1085 + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1086 + engines: {node: '>=8'} 1087 + 1088 + find-up@5.0.0: 1089 + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1090 + engines: {node: '>=10'} 1091 + 1092 + flat-cache@4.0.1: 1093 + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1094 + engines: {node: '>=16'} 1095 + 1096 + flatted@3.3.3: 1097 + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1098 + 758 1099 flattie@1.1.1: 759 1100 resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} 760 1101 engines: {node: '>=8'} ··· 776 1117 777 1118 github-slugger@2.0.0: 778 1119 resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} 1120 + 1121 + glob-parent@5.1.2: 1122 + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1123 + engines: {node: '>= 6'} 1124 + 1125 + glob-parent@6.0.2: 1126 + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1127 + engines: {node: '>=10.13.0'} 1128 + 1129 + globals@14.0.0: 1130 + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1131 + engines: {node: '>=18'} 1132 + 1133 + globals@15.15.0: 1134 + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 1135 + engines: {node: '>=18'} 1136 + 1137 + globals@16.3.0: 1138 + resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} 1139 + engines: {node: '>=18'} 1140 + 1141 + graphemer@1.4.0: 1142 + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 779 1143 780 1144 h3@1.15.3: 781 1145 resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==} 782 1146 1147 + has-flag@4.0.0: 1148 + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1149 + engines: {node: '>=8'} 1150 + 783 1151 hast-util-from-html@2.0.3: 784 1152 resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} 785 1153 ··· 819 1187 http-cache-semantics@4.2.0: 820 1188 resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} 821 1189 1190 + ignore@5.3.2: 1191 + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1192 + engines: {node: '>= 4'} 1193 + 1194 + ignore@7.0.5: 1195 + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 1196 + engines: {node: '>= 4'} 1197 + 1198 + import-fresh@3.3.1: 1199 + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1200 + engines: {node: '>=6'} 1201 + 822 1202 import-meta-resolve@4.1.0: 823 1203 resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 824 1204 1205 + imurmurhash@0.1.4: 1206 + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1207 + engines: {node: '>=0.8.19'} 1208 + 825 1209 iron-webcrypto@1.2.1: 826 1210 resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} 827 1211 ··· 832 1216 resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 833 1217 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 834 1218 hasBin: true 1219 + 1220 + is-extglob@2.1.1: 1221 + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1222 + engines: {node: '>=0.10.0'} 835 1223 836 1224 is-fullwidth-code-point@3.0.0: 837 1225 resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 838 1226 engines: {node: '>=8'} 1227 + 1228 + is-glob@4.0.3: 1229 + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1230 + engines: {node: '>=0.10.0'} 839 1231 840 1232 is-inside-container@1.0.0: 841 1233 resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 842 1234 engines: {node: '>=14.16'} 843 1235 hasBin: true 844 1236 1237 + is-number@7.0.0: 1238 + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1239 + engines: {node: '>=0.12.0'} 1240 + 845 1241 is-plain-obj@4.1.0: 846 1242 resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 847 1243 engines: {node: '>=12'} ··· 850 1246 resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 851 1247 engines: {node: '>=16'} 852 1248 1249 + isexe@2.0.0: 1250 + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1251 + 1252 + jiti@2.5.1: 1253 + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} 1254 + hasBin: true 1255 + 853 1256 js-yaml@4.1.0: 854 1257 resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 855 1258 hasBin: true 856 1259 1260 + json-buffer@3.0.1: 1261 + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1262 + 1263 + json-schema-traverse@0.4.1: 1264 + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1265 + 1266 + json-stable-stringify-without-jsonify@1.0.1: 1267 + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1268 + 1269 + keyv@4.5.4: 1270 + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1271 + 857 1272 kleur@3.0.3: 858 1273 resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 859 1274 engines: {node: '>=6'} ··· 862 1277 resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 863 1278 engines: {node: '>=6'} 864 1279 1280 + levn@0.4.1: 1281 + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1282 + engines: {node: '>= 0.8.0'} 1283 + 1284 + locate-path@6.0.0: 1285 + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1286 + engines: {node: '>=10'} 1287 + 1288 + lodash.merge@4.6.2: 1289 + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1290 + 865 1291 longest-streak@3.1.0: 866 1292 resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 867 1293 ··· 918 1344 919 1345 mdn-data@2.12.2: 920 1346 resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 1347 + 1348 + merge2@1.4.1: 1349 + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1350 + engines: {node: '>= 8'} 921 1351 922 1352 micromark-core-commonmark@2.0.3: 923 1353 resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} ··· 1003 1433 micromark@4.0.2: 1004 1434 resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} 1005 1435 1436 + micromatch@4.0.8: 1437 + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1438 + engines: {node: '>=8.6'} 1439 + 1440 + minimatch@3.1.2: 1441 + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1442 + 1443 + minimatch@9.0.5: 1444 + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1445 + engines: {node: '>=16 || 14 >=14.17'} 1446 + 1006 1447 mrmime@2.0.1: 1007 1448 resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} 1008 1449 engines: {node: '>=10'} ··· 1019 1460 resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} 1020 1461 engines: {node: ^18 || >=20} 1021 1462 hasBin: true 1463 + 1464 + natural-compare@1.4.0: 1465 + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1022 1466 1023 1467 neotraverse@0.6.18: 1024 1468 resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} ··· 1058 1502 oniguruma-to-es@4.3.3: 1059 1503 resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} 1060 1504 1505 + optionator@0.9.4: 1506 + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1507 + engines: {node: '>= 0.8.0'} 1508 + 1509 + p-limit@3.1.0: 1510 + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1511 + engines: {node: '>=10'} 1512 + 1061 1513 p-limit@6.2.0: 1062 1514 resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} 1063 1515 engines: {node: '>=18'} 1516 + 1517 + p-locate@5.0.0: 1518 + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1519 + engines: {node: '>=10'} 1064 1520 1065 1521 p-queue@8.1.0: 1066 1522 resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==} ··· 1076 1532 pako@0.2.9: 1077 1533 resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} 1078 1534 1535 + parent-module@1.0.1: 1536 + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1537 + engines: {node: '>=6'} 1538 + 1079 1539 parse-latin@7.0.0: 1080 1540 resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} 1081 1541 1082 1542 parse5@7.3.0: 1083 1543 resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 1084 1544 1545 + path-exists@4.0.0: 1546 + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1547 + engines: {node: '>=8'} 1548 + 1549 + path-key@3.1.1: 1550 + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1551 + engines: {node: '>=8'} 1552 + 1085 1553 picocolors@1.1.1: 1086 1554 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1087 1555 ··· 1093 1561 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1094 1562 engines: {node: '>=12'} 1095 1563 1564 + postcss-selector-parser@7.1.0: 1565 + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} 1566 + engines: {node: '>=4'} 1567 + 1096 1568 postcss@8.5.6: 1097 1569 resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1098 1570 engines: {node: ^10 || ^12 || >=14} 1099 1571 1572 + prelude-ls@1.2.1: 1573 + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1574 + engines: {node: '>= 0.8.0'} 1575 + 1576 + prettier-linter-helpers@1.0.0: 1577 + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 1578 + engines: {node: '>=6.0.0'} 1579 + 1580 + prettier-plugin-astro@0.14.1: 1581 + resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} 1582 + engines: {node: ^14.15.0 || >=16.0.0} 1583 + 1584 + prettier@3.6.2: 1585 + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 1586 + engines: {node: '>=14'} 1587 + hasBin: true 1588 + 1100 1589 prismjs@1.30.0: 1101 1590 resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} 1102 1591 engines: {node: '>=6'} ··· 1111 1600 property-information@7.1.0: 1112 1601 resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} 1113 1602 1603 + punycode@2.3.1: 1604 + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1605 + engines: {node: '>=6'} 1606 + 1607 + queue-microtask@1.2.3: 1608 + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1609 + 1114 1610 radix3@1.1.2: 1115 1611 resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} 1116 1612 ··· 1155 1651 remark-stringify@11.0.0: 1156 1652 resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} 1157 1653 1654 + resolve-from@4.0.0: 1655 + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1656 + engines: {node: '>=4'} 1657 + 1158 1658 restructure@3.0.2: 1159 1659 resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} 1160 1660 ··· 1170 1670 retext@9.0.0: 1171 1671 resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} 1172 1672 1673 + reusify@1.1.0: 1674 + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1675 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1676 + 1173 1677 rollup@4.45.3: 1174 1678 resolution: {integrity: sha512-STwyHZF3G+CrmZhB+qDiROq9s8B5PrOCYN6dtmOvwz585XBnyeHk1GTEhHJtUVb355/9uZhOazyVclTt5uahzA==} 1175 1679 engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1176 1680 hasBin: true 1177 1681 1682 + run-parallel@1.2.0: 1683 + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1684 + 1685 + s.color@0.0.15: 1686 + resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} 1687 + 1688 + sass-formatter@0.7.9: 1689 + resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} 1690 + 1178 1691 semver@7.7.2: 1179 1692 resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1180 1693 engines: {node: '>=10'} ··· 1183 1696 sharp@0.33.5: 1184 1697 resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1185 1698 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1699 + 1700 + shebang-command@2.0.0: 1701 + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1702 + engines: {node: '>=8'} 1703 + 1704 + shebang-regex@3.0.0: 1705 + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1706 + engines: {node: '>=8'} 1186 1707 1187 1708 shiki@3.8.1: 1188 1709 resolution: {integrity: sha512-+MYIyjwGPCaegbpBeFN9+oOifI8CKiKG3awI/6h3JeT85c//H2wDW/xCJEGuQ5jPqtbboKNqNy+JyX9PYpGwNg==} ··· 1223 1744 resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1224 1745 engines: {node: '>=12'} 1225 1746 1747 + strip-json-comments@3.1.1: 1748 + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1749 + engines: {node: '>=8'} 1750 + 1751 + suf-log@2.5.3: 1752 + resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} 1753 + 1754 + supports-color@7.2.0: 1755 + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1756 + engines: {node: '>=8'} 1757 + 1758 + synckit@0.11.11: 1759 + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} 1760 + engines: {node: ^14.18.0 || >=16.0.0} 1761 + 1226 1762 tiny-inflate@1.0.3: 1227 1763 resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} 1228 1764 ··· 1233 1769 resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} 1234 1770 engines: {node: '>=12.0.0'} 1235 1771 1772 + to-regex-range@5.0.1: 1773 + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1774 + engines: {node: '>=8.0'} 1775 + 1236 1776 tr46@0.0.3: 1237 1777 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1238 1778 ··· 1242 1782 trough@2.2.0: 1243 1783 resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} 1244 1784 1785 + ts-api-utils@2.1.0: 1786 + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1787 + engines: {node: '>=18.12'} 1788 + peerDependencies: 1789 + typescript: '>=4.8.4' 1790 + 1245 1791 tsconfck@3.1.6: 1246 1792 resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} 1247 1793 engines: {node: ^18 || >=20} ··· 1255 1801 tslib@2.8.1: 1256 1802 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1257 1803 1804 + type-check@0.4.0: 1805 + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1806 + engines: {node: '>= 0.8.0'} 1807 + 1258 1808 type-fest@4.41.0: 1259 1809 resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 1260 1810 engines: {node: '>=16'} 1811 + 1812 + typescript-eslint@8.38.0: 1813 + resolution: {integrity: sha512-FsZlrYK6bPDGoLeZRuvx2v6qrM03I0U0SnfCLPs/XCCPCFD80xU9Pg09H/K+XFa68uJuZo7l/Xhs+eDRg2l3hg==} 1814 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1815 + peerDependencies: 1816 + eslint: ^8.57.0 || ^9.0.0 1817 + typescript: '>=4.8.4 <5.9.0' 1261 1818 1262 1819 typescript@5.8.3: 1263 1820 resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} ··· 1374 1931 uploadthing: 1375 1932 optional: true 1376 1933 1934 + uri-js@4.4.1: 1935 + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1936 + 1937 + util-deprecate@1.0.2: 1938 + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1939 + 1377 1940 vfile-location@5.0.3: 1378 1941 resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} 1379 1942 ··· 1444 2007 resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} 1445 2008 engines: {node: '>=4'} 1446 2009 2010 + which@2.0.2: 2011 + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2012 + engines: {node: '>= 8'} 2013 + hasBin: true 2014 + 1447 2015 widest-line@5.0.0: 1448 2016 resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} 1449 2017 engines: {node: '>=18'} 1450 2018 2019 + word-wrap@1.2.5: 2020 + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 2021 + engines: {node: '>=0.10.0'} 2022 + 1451 2023 wrap-ansi@9.0.0: 1452 2024 resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} 1453 2025 engines: {node: '>=18'} ··· 1458 2030 yargs-parser@21.1.1: 1459 2031 resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1460 2032 engines: {node: '>=12'} 2033 + 2034 + yocto-queue@0.1.0: 2035 + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2036 + engines: {node: '>=10'} 1461 2037 1462 2038 yocto-queue@1.2.1: 1463 2039 resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} ··· 1671 2247 '@esbuild/win32-x64@0.25.8': 1672 2248 optional: true 1673 2249 2250 + '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))': 2251 + dependencies: 2252 + eslint: 9.32.0(jiti@2.5.1) 2253 + eslint-visitor-keys: 3.4.3 2254 + 2255 + '@eslint-community/regexpp@4.12.1': {} 2256 + 2257 + '@eslint/config-array@0.21.0': 2258 + dependencies: 2259 + '@eslint/object-schema': 2.1.6 2260 + debug: 4.4.1 2261 + minimatch: 3.1.2 2262 + transitivePeerDependencies: 2263 + - supports-color 2264 + 2265 + '@eslint/config-helpers@0.3.0': {} 2266 + 2267 + '@eslint/core@0.15.1': 2268 + dependencies: 2269 + '@types/json-schema': 7.0.15 2270 + 2271 + '@eslint/eslintrc@3.3.1': 2272 + dependencies: 2273 + ajv: 6.12.6 2274 + debug: 4.4.1 2275 + espree: 10.4.0 2276 + globals: 14.0.0 2277 + ignore: 5.3.2 2278 + import-fresh: 3.3.1 2279 + js-yaml: 4.1.0 2280 + minimatch: 3.1.2 2281 + strip-json-comments: 3.1.1 2282 + transitivePeerDependencies: 2283 + - supports-color 2284 + 2285 + '@eslint/js@9.32.0': {} 2286 + 2287 + '@eslint/object-schema@2.1.6': {} 2288 + 2289 + '@eslint/plugin-kit@0.3.4': 2290 + dependencies: 2291 + '@eslint/core': 0.15.1 2292 + levn: 0.4.1 2293 + 2294 + '@humanfs/core@0.19.1': {} 2295 + 2296 + '@humanfs/node@0.16.6': 2297 + dependencies: 2298 + '@humanfs/core': 0.19.1 2299 + '@humanwhocodes/retry': 0.3.1 2300 + 2301 + '@humanwhocodes/module-importer@1.0.1': {} 2302 + 2303 + '@humanwhocodes/retry@0.3.1': {} 2304 + 2305 + '@humanwhocodes/retry@0.4.3': {} 2306 + 1674 2307 '@img/sharp-darwin-arm64@0.33.5': 1675 2308 optionalDependencies: 1676 2309 '@img/sharp-libvips-darwin-arm64': 1.0.4 ··· 1748 2381 1749 2382 '@jridgewell/sourcemap-codec@1.5.4': {} 1750 2383 2384 + '@nodelib/fs.scandir@2.1.5': 2385 + dependencies: 2386 + '@nodelib/fs.stat': 2.0.5 2387 + run-parallel: 1.2.0 2388 + 2389 + '@nodelib/fs.stat@2.0.5': {} 2390 + 2391 + '@nodelib/fs.walk@1.2.8': 2392 + dependencies: 2393 + '@nodelib/fs.scandir': 2.1.5 2394 + fastq: 1.19.1 2395 + 1751 2396 '@oslojs/encoding@1.1.0': {} 2397 + 2398 + '@pkgr/core@0.2.9': {} 1752 2399 1753 2400 '@rollup/pluginutils@5.2.0(rollup@4.45.3)': 1754 2401 dependencies: ··· 1869 2516 dependencies: 1870 2517 '@types/unist': 3.0.3 1871 2518 2519 + '@types/json-schema@7.0.15': {} 2520 + 1872 2521 '@types/mdast@4.0.4': 1873 2522 dependencies: 1874 2523 '@types/unist': 3.0.3 ··· 1885 2534 1886 2535 '@types/unist@3.0.3': {} 1887 2536 2537 + '@typescript-eslint/eslint-plugin@8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': 2538 + dependencies: 2539 + '@eslint-community/regexpp': 4.12.1 2540 + '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 2541 + '@typescript-eslint/scope-manager': 8.38.0 2542 + '@typescript-eslint/type-utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 2543 + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 2544 + '@typescript-eslint/visitor-keys': 8.38.0 2545 + eslint: 9.32.0(jiti@2.5.1) 2546 + graphemer: 1.4.0 2547 + ignore: 7.0.5 2548 + natural-compare: 1.4.0 2549 + ts-api-utils: 2.1.0(typescript@5.8.3) 2550 + typescript: 5.8.3 2551 + transitivePeerDependencies: 2552 + - supports-color 2553 + 2554 + '@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': 2555 + dependencies: 2556 + '@typescript-eslint/scope-manager': 8.38.0 2557 + '@typescript-eslint/types': 8.38.0 2558 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 2559 + '@typescript-eslint/visitor-keys': 8.38.0 2560 + debug: 4.4.1 2561 + eslint: 9.32.0(jiti@2.5.1) 2562 + typescript: 5.8.3 2563 + transitivePeerDependencies: 2564 + - supports-color 2565 + 2566 + '@typescript-eslint/project-service@8.38.0(typescript@5.8.3)': 2567 + dependencies: 2568 + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) 2569 + '@typescript-eslint/types': 8.38.0 2570 + debug: 4.4.1 2571 + typescript: 5.8.3 2572 + transitivePeerDependencies: 2573 + - supports-color 2574 + 2575 + '@typescript-eslint/scope-manager@8.38.0': 2576 + dependencies: 2577 + '@typescript-eslint/types': 8.38.0 2578 + '@typescript-eslint/visitor-keys': 8.38.0 2579 + 2580 + '@typescript-eslint/tsconfig-utils@8.38.0(typescript@5.8.3)': 2581 + dependencies: 2582 + typescript: 5.8.3 2583 + 2584 + '@typescript-eslint/type-utils@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': 2585 + dependencies: 2586 + '@typescript-eslint/types': 8.38.0 2587 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 2588 + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 2589 + debug: 4.4.1 2590 + eslint: 9.32.0(jiti@2.5.1) 2591 + ts-api-utils: 2.1.0(typescript@5.8.3) 2592 + typescript: 5.8.3 2593 + transitivePeerDependencies: 2594 + - supports-color 2595 + 2596 + '@typescript-eslint/types@8.38.0': {} 2597 + 2598 + '@typescript-eslint/typescript-estree@8.38.0(typescript@5.8.3)': 2599 + dependencies: 2600 + '@typescript-eslint/project-service': 8.38.0(typescript@5.8.3) 2601 + '@typescript-eslint/tsconfig-utils': 8.38.0(typescript@5.8.3) 2602 + '@typescript-eslint/types': 8.38.0 2603 + '@typescript-eslint/visitor-keys': 8.38.0 2604 + debug: 4.4.1 2605 + fast-glob: 3.3.3 2606 + is-glob: 4.0.3 2607 + minimatch: 9.0.5 2608 + semver: 7.7.2 2609 + ts-api-utils: 2.1.0(typescript@5.8.3) 2610 + typescript: 5.8.3 2611 + transitivePeerDependencies: 2612 + - supports-color 2613 + 2614 + '@typescript-eslint/utils@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3)': 2615 + dependencies: 2616 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) 2617 + '@typescript-eslint/scope-manager': 8.38.0 2618 + '@typescript-eslint/types': 8.38.0 2619 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 2620 + eslint: 9.32.0(jiti@2.5.1) 2621 + typescript: 5.8.3 2622 + transitivePeerDependencies: 2623 + - supports-color 2624 + 2625 + '@typescript-eslint/visitor-keys@8.38.0': 2626 + dependencies: 2627 + '@typescript-eslint/types': 8.38.0 2628 + eslint-visitor-keys: 4.2.1 2629 + 1888 2630 '@ungap/structured-clone@1.3.0': {} 1889 2631 2632 + acorn-jsx@5.3.2(acorn@8.15.0): 2633 + dependencies: 2634 + acorn: 8.15.0 2635 + 1890 2636 acorn@8.15.0: {} 1891 2637 2638 + ajv@6.12.6: 2639 + dependencies: 2640 + fast-deep-equal: 3.1.3 2641 + fast-json-stable-stringify: 2.1.0 2642 + json-schema-traverse: 0.4.1 2643 + uri-js: 4.4.1 2644 + 1892 2645 ansi-align@3.0.1: 1893 2646 dependencies: 1894 2647 string-width: 4.2.3 ··· 1896 2649 ansi-regex@5.0.1: {} 1897 2650 1898 2651 ansi-regex@6.1.0: {} 2652 + 2653 + ansi-styles@4.3.0: 2654 + dependencies: 2655 + color-convert: 2.0.1 1899 2656 1900 2657 ansi-styles@6.2.1: {} 1901 2658 ··· 1910 2667 1911 2668 array-iterate@2.0.1: {} 1912 2669 1913 - astro@5.12.3(@types/node@24.1.0)(rollup@4.45.3)(typescript@5.8.3): 2670 + astro-eslint-parser@1.2.2: 2671 + dependencies: 2672 + '@astrojs/compiler': 2.12.2 2673 + '@typescript-eslint/scope-manager': 8.38.0 2674 + '@typescript-eslint/types': 8.38.0 2675 + astrojs-compiler-sync: 1.1.1(@astrojs/compiler@2.12.2) 2676 + debug: 4.4.1 2677 + entities: 6.0.1 2678 + eslint-scope: 8.4.0 2679 + eslint-visitor-keys: 4.2.1 2680 + espree: 10.4.0 2681 + fast-glob: 3.3.3 2682 + is-glob: 4.0.3 2683 + semver: 7.7.2 2684 + transitivePeerDependencies: 2685 + - supports-color 2686 + 2687 + astro@5.12.3(@types/node@24.1.0)(jiti@2.5.1)(rollup@4.45.3)(typescript@5.8.3): 1914 2688 dependencies: 1915 2689 '@astrojs/compiler': 2.12.2 1916 2690 '@astrojs/internal-helpers': 0.6.1 ··· 1966 2740 unist-util-visit: 5.0.0 1967 2741 unstorage: 1.16.1 1968 2742 vfile: 6.0.3 1969 - vite: 6.3.5(@types/node@24.1.0) 1970 - vitefu: 1.1.1(vite@6.3.5(@types/node@24.1.0)) 2743 + vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1) 2744 + vitefu: 1.1.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)) 1971 2745 xxhash-wasm: 1.1.0 1972 2746 yargs-parser: 21.1.1 1973 2747 yocto-spinner: 0.2.3 ··· 2011 2785 - uploadthing 2012 2786 - yaml 2013 2787 2788 + astrojs-compiler-sync@1.1.1(@astrojs/compiler@2.12.2): 2789 + dependencies: 2790 + '@astrojs/compiler': 2.12.2 2791 + synckit: 0.11.11 2792 + 2014 2793 axobject-query@4.1.0: {} 2015 2794 2016 2795 bail@2.0.2: {} 2796 + 2797 + balanced-match@1.0.2: {} 2017 2798 2018 2799 base-64@1.0.0: {} 2019 2800 ··· 2032 2813 widest-line: 5.0.0 2033 2814 wrap-ansi: 9.0.0 2034 2815 2816 + brace-expansion@1.1.12: 2817 + dependencies: 2818 + balanced-match: 1.0.2 2819 + concat-map: 0.0.1 2820 + 2821 + brace-expansion@2.0.2: 2822 + dependencies: 2823 + balanced-match: 1.0.2 2824 + 2825 + braces@3.0.3: 2826 + dependencies: 2827 + fill-range: 7.1.1 2828 + 2035 2829 brotli@1.3.3: 2036 2830 dependencies: 2037 2831 base64-js: 1.5.1 2832 + 2833 + callsites@3.1.0: {} 2038 2834 2039 2835 camelcase@8.0.0: {} 2040 2836 2041 2837 ccount@2.0.1: {} 2042 2838 2839 + chalk@4.1.2: 2840 + dependencies: 2841 + ansi-styles: 4.3.0 2842 + supports-color: 7.2.0 2843 + 2043 2844 chalk@5.4.1: {} 2044 2845 2045 2846 character-entities-html4@2.1.0: {} ··· 2063 2864 color-convert@2.0.1: 2064 2865 dependencies: 2065 2866 color-name: 1.1.4 2066 - optional: true 2067 2867 2068 - color-name@1.1.4: 2069 - optional: true 2868 + color-name@1.1.4: {} 2070 2869 2071 2870 color-string@1.9.1: 2072 2871 dependencies: ··· 2084 2883 2085 2884 common-ancestor-path@1.0.1: {} 2086 2885 2886 + concat-map@0.0.1: {} 2887 + 2087 2888 cookie-es@1.2.2: {} 2088 2889 2089 2890 cookie@1.0.2: {} ··· 2093 2894 node-fetch: 2.7.0 2094 2895 transitivePeerDependencies: 2095 2896 - encoding 2897 + 2898 + cross-spawn@7.0.6: 2899 + dependencies: 2900 + path-key: 3.1.1 2901 + shebang-command: 2.0.0 2902 + which: 2.0.2 2096 2903 2097 2904 crossws@0.3.5: 2098 2905 dependencies: ··· 2112 2919 decode-named-character-reference@1.2.0: 2113 2920 dependencies: 2114 2921 character-entities: 2.0.2 2922 + 2923 + deep-is@0.1.4: {} 2115 2924 2116 2925 defu@6.1.4: {} 2117 2926 ··· 2177 2986 '@esbuild/win32-ia32': 0.25.8 2178 2987 '@esbuild/win32-x64': 0.25.8 2179 2988 2989 + escape-string-regexp@4.0.0: {} 2990 + 2180 2991 escape-string-regexp@5.0.0: {} 2181 2992 2993 + eslint-compat-utils@0.6.5(eslint@9.32.0(jiti@2.5.1)): 2994 + dependencies: 2995 + eslint: 9.32.0(jiti@2.5.1) 2996 + semver: 7.7.2 2997 + 2998 + eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)): 2999 + dependencies: 3000 + eslint: 9.32.0(jiti@2.5.1) 3001 + 3002 + eslint-plugin-astro@1.3.1(eslint@9.32.0(jiti@2.5.1)): 3003 + dependencies: 3004 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) 3005 + '@jridgewell/sourcemap-codec': 1.5.4 3006 + '@typescript-eslint/types': 8.38.0 3007 + astro-eslint-parser: 1.2.2 3008 + eslint: 9.32.0(jiti@2.5.1) 3009 + eslint-compat-utils: 0.6.5(eslint@9.32.0(jiti@2.5.1)) 3010 + globals: 15.15.0 3011 + postcss: 8.5.6 3012 + postcss-selector-parser: 7.1.0 3013 + transitivePeerDependencies: 3014 + - supports-color 3015 + 3016 + eslint-plugin-prettier@5.5.3(eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1))(prettier@3.6.2): 3017 + dependencies: 3018 + eslint: 9.32.0(jiti@2.5.1) 3019 + prettier: 3.6.2 3020 + prettier-linter-helpers: 1.0.0 3021 + synckit: 0.11.11 3022 + optionalDependencies: 3023 + eslint-config-prettier: 10.1.8(eslint@9.32.0(jiti@2.5.1)) 3024 + 3025 + eslint-scope@8.4.0: 3026 + dependencies: 3027 + esrecurse: 4.3.0 3028 + estraverse: 5.3.0 3029 + 3030 + eslint-visitor-keys@3.4.3: {} 3031 + 3032 + eslint-visitor-keys@4.2.1: {} 3033 + 3034 + eslint@9.32.0(jiti@2.5.1): 3035 + dependencies: 3036 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) 3037 + '@eslint-community/regexpp': 4.12.1 3038 + '@eslint/config-array': 0.21.0 3039 + '@eslint/config-helpers': 0.3.0 3040 + '@eslint/core': 0.15.1 3041 + '@eslint/eslintrc': 3.3.1 3042 + '@eslint/js': 9.32.0 3043 + '@eslint/plugin-kit': 0.3.4 3044 + '@humanfs/node': 0.16.6 3045 + '@humanwhocodes/module-importer': 1.0.1 3046 + '@humanwhocodes/retry': 0.4.3 3047 + '@types/estree': 1.0.8 3048 + '@types/json-schema': 7.0.15 3049 + ajv: 6.12.6 3050 + chalk: 4.1.2 3051 + cross-spawn: 7.0.6 3052 + debug: 4.4.1 3053 + escape-string-regexp: 4.0.0 3054 + eslint-scope: 8.4.0 3055 + eslint-visitor-keys: 4.2.1 3056 + espree: 10.4.0 3057 + esquery: 1.6.0 3058 + esutils: 2.0.3 3059 + fast-deep-equal: 3.1.3 3060 + file-entry-cache: 8.0.0 3061 + find-up: 5.0.0 3062 + glob-parent: 6.0.2 3063 + ignore: 5.3.2 3064 + imurmurhash: 0.1.4 3065 + is-glob: 4.0.3 3066 + json-stable-stringify-without-jsonify: 1.0.1 3067 + lodash.merge: 4.6.2 3068 + minimatch: 3.1.2 3069 + natural-compare: 1.4.0 3070 + optionator: 0.9.4 3071 + optionalDependencies: 3072 + jiti: 2.5.1 3073 + transitivePeerDependencies: 3074 + - supports-color 3075 + 2182 3076 esm-env@1.2.2: {} 2183 3077 3078 + espree@10.4.0: 3079 + dependencies: 3080 + acorn: 8.15.0 3081 + acorn-jsx: 5.3.2(acorn@8.15.0) 3082 + eslint-visitor-keys: 4.2.1 3083 + 3084 + esquery@1.6.0: 3085 + dependencies: 3086 + estraverse: 5.3.0 3087 + 3088 + esrecurse@4.3.0: 3089 + dependencies: 3090 + estraverse: 5.3.0 3091 + 3092 + estraverse@5.3.0: {} 3093 + 2184 3094 estree-walker@2.0.2: {} 2185 3095 2186 3096 estree-walker@3.0.3: 2187 3097 dependencies: 2188 3098 '@types/estree': 1.0.8 3099 + 3100 + esutils@2.0.3: {} 2189 3101 2190 3102 eventemitter3@5.0.1: {} 2191 3103 ··· 2193 3105 2194 3106 fast-deep-equal@3.1.3: {} 2195 3107 3108 + fast-diff@1.3.0: {} 3109 + 3110 + fast-glob@3.3.3: 3111 + dependencies: 3112 + '@nodelib/fs.stat': 2.0.5 3113 + '@nodelib/fs.walk': 1.2.8 3114 + glob-parent: 5.1.2 3115 + merge2: 1.4.1 3116 + micromatch: 4.0.8 3117 + 3118 + fast-json-stable-stringify@2.1.0: {} 3119 + 3120 + fast-levenshtein@2.0.6: {} 3121 + 3122 + fastq@1.19.1: 3123 + dependencies: 3124 + reusify: 1.1.0 3125 + 2196 3126 fdir@6.4.6(picomatch@4.0.3): 2197 3127 optionalDependencies: 2198 3128 picomatch: 4.0.3 2199 3129 3130 + file-entry-cache@8.0.0: 3131 + dependencies: 3132 + flat-cache: 4.0.1 3133 + 3134 + fill-range@7.1.1: 3135 + dependencies: 3136 + to-regex-range: 5.0.1 3137 + 3138 + find-up@5.0.0: 3139 + dependencies: 3140 + locate-path: 6.0.0 3141 + path-exists: 4.0.0 3142 + 3143 + flat-cache@4.0.1: 3144 + dependencies: 3145 + flatted: 3.3.3 3146 + keyv: 4.5.4 3147 + 3148 + flatted@3.3.3: {} 3149 + 2200 3150 flattie@1.1.1: {} 2201 3151 2202 3152 fontace@0.3.0: ··· 2223 3173 2224 3174 github-slugger@2.0.0: {} 2225 3175 3176 + glob-parent@5.1.2: 3177 + dependencies: 3178 + is-glob: 4.0.3 3179 + 3180 + glob-parent@6.0.2: 3181 + dependencies: 3182 + is-glob: 4.0.3 3183 + 3184 + globals@14.0.0: {} 3185 + 3186 + globals@15.15.0: {} 3187 + 3188 + globals@16.3.0: {} 3189 + 3190 + graphemer@1.4.0: {} 3191 + 2226 3192 h3@1.15.3: 2227 3193 dependencies: 2228 3194 cookie-es: 1.2.2 ··· 2234 3200 radix3: 1.1.2 2235 3201 ufo: 1.6.1 2236 3202 uncrypto: 0.1.3 3203 + 3204 + has-flag@4.0.0: {} 2237 3205 2238 3206 hast-util-from-html@2.0.3: 2239 3207 dependencies: ··· 2328 3296 2329 3297 http-cache-semantics@4.2.0: {} 2330 3298 3299 + ignore@5.3.2: {} 3300 + 3301 + ignore@7.0.5: {} 3302 + 3303 + import-fresh@3.3.1: 3304 + dependencies: 3305 + parent-module: 1.0.1 3306 + resolve-from: 4.0.0 3307 + 2331 3308 import-meta-resolve@4.1.0: {} 2332 3309 3310 + imurmurhash@0.1.4: {} 3311 + 2333 3312 iron-webcrypto@1.2.1: {} 2334 3313 2335 3314 is-arrayish@0.3.2: ··· 2337 3316 2338 3317 is-docker@3.0.0: {} 2339 3318 3319 + is-extglob@2.1.1: {} 3320 + 2340 3321 is-fullwidth-code-point@3.0.0: {} 2341 3322 3323 + is-glob@4.0.3: 3324 + dependencies: 3325 + is-extglob: 2.1.1 3326 + 2342 3327 is-inside-container@1.0.0: 2343 3328 dependencies: 2344 3329 is-docker: 3.0.0 3330 + 3331 + is-number@7.0.0: {} 2345 3332 2346 3333 is-plain-obj@4.1.0: {} 2347 3334 2348 3335 is-wsl@3.1.0: 2349 3336 dependencies: 2350 3337 is-inside-container: 1.0.0 3338 + 3339 + isexe@2.0.0: {} 3340 + 3341 + jiti@2.5.1: {} 2351 3342 2352 3343 js-yaml@4.1.0: 2353 3344 dependencies: 2354 3345 argparse: 2.0.1 2355 3346 3347 + json-buffer@3.0.1: {} 3348 + 3349 + json-schema-traverse@0.4.1: {} 3350 + 3351 + json-stable-stringify-without-jsonify@1.0.1: {} 3352 + 3353 + keyv@4.5.4: 3354 + dependencies: 3355 + json-buffer: 3.0.1 3356 + 2356 3357 kleur@3.0.3: {} 2357 3358 2358 3359 kleur@4.1.5: {} 2359 3360 3361 + levn@0.4.1: 3362 + dependencies: 3363 + prelude-ls: 1.2.1 3364 + type-check: 0.4.0 3365 + 3366 + locate-path@6.0.0: 3367 + dependencies: 3368 + p-locate: 5.0.0 3369 + 3370 + lodash.merge@4.6.2: {} 3371 + 2360 3372 longest-streak@3.1.0: {} 2361 3373 2362 3374 lru-cache@10.4.3: {} ··· 2494 3506 '@types/mdast': 4.0.4 2495 3507 2496 3508 mdn-data@2.12.2: {} 3509 + 3510 + merge2@1.4.1: {} 2497 3511 2498 3512 micromark-core-commonmark@2.0.3: 2499 3513 dependencies: ··· 2686 3700 transitivePeerDependencies: 2687 3701 - supports-color 2688 3702 3703 + micromatch@4.0.8: 3704 + dependencies: 3705 + braces: 3.0.3 3706 + picomatch: 2.3.1 3707 + 3708 + minimatch@3.1.2: 3709 + dependencies: 3710 + brace-expansion: 1.1.12 3711 + 3712 + minimatch@9.0.5: 3713 + dependencies: 3714 + brace-expansion: 2.0.2 3715 + 2689 3716 mrmime@2.0.1: {} 2690 3717 2691 3718 ms@2.1.3: {} ··· 2694 3721 2695 3722 nanoid@5.1.5: {} 2696 3723 3724 + natural-compare@1.4.0: {} 3725 + 2697 3726 neotraverse@0.6.18: {} 2698 3727 2699 3728 nlcst-to-string@4.0.0: ··· 2726 3755 regex: 6.0.1 2727 3756 regex-recursion: 6.0.2 2728 3757 3758 + optionator@0.9.4: 3759 + dependencies: 3760 + deep-is: 0.1.4 3761 + fast-levenshtein: 2.0.6 3762 + levn: 0.4.1 3763 + prelude-ls: 1.2.1 3764 + type-check: 0.4.0 3765 + word-wrap: 1.2.5 3766 + 3767 + p-limit@3.1.0: 3768 + dependencies: 3769 + yocto-queue: 0.1.0 3770 + 2729 3771 p-limit@6.2.0: 2730 3772 dependencies: 2731 3773 yocto-queue: 1.2.1 3774 + 3775 + p-locate@5.0.0: 3776 + dependencies: 3777 + p-limit: 3.1.0 2732 3778 2733 3779 p-queue@8.1.0: 2734 3780 dependencies: ··· 2741 3787 2742 3788 pako@0.2.9: {} 2743 3789 3790 + parent-module@1.0.1: 3791 + dependencies: 3792 + callsites: 3.1.0 3793 + 2744 3794 parse-latin@7.0.0: 2745 3795 dependencies: 2746 3796 '@types/nlcst': 2.0.3 ··· 2754 3804 dependencies: 2755 3805 entities: 6.0.1 2756 3806 3807 + path-exists@4.0.0: {} 3808 + 3809 + path-key@3.1.1: {} 3810 + 2757 3811 picocolors@1.1.1: {} 2758 3812 2759 3813 picomatch@2.3.1: {} 2760 3814 2761 3815 picomatch@4.0.3: {} 2762 3816 3817 + postcss-selector-parser@7.1.0: 3818 + dependencies: 3819 + cssesc: 3.0.0 3820 + util-deprecate: 1.0.2 3821 + 2763 3822 postcss@8.5.6: 2764 3823 dependencies: 2765 3824 nanoid: 3.3.11 2766 3825 picocolors: 1.1.1 2767 3826 source-map-js: 1.2.1 2768 3827 3828 + prelude-ls@1.2.1: {} 3829 + 3830 + prettier-linter-helpers@1.0.0: 3831 + dependencies: 3832 + fast-diff: 1.3.0 3833 + 3834 + prettier-plugin-astro@0.14.1: 3835 + dependencies: 3836 + '@astrojs/compiler': 2.12.2 3837 + prettier: 3.6.2 3838 + sass-formatter: 0.7.9 3839 + 3840 + prettier@3.6.2: {} 3841 + 2769 3842 prismjs@1.30.0: {} 2770 3843 2771 3844 prompts@2.4.2: ··· 2776 3849 property-information@6.5.0: {} 2777 3850 2778 3851 property-information@7.1.0: {} 3852 + 3853 + punycode@2.3.1: {} 3854 + 3855 + queue-microtask@1.2.3: {} 2779 3856 2780 3857 radix3@1.1.2: {} 2781 3858 ··· 2857 3934 mdast-util-to-markdown: 2.1.2 2858 3935 unified: 11.0.5 2859 3936 3937 + resolve-from@4.0.0: {} 3938 + 2860 3939 restructure@3.0.2: {} 2861 3940 2862 3941 retext-latin@4.0.0: ··· 2884 3963 retext-stringify: 4.0.0 2885 3964 unified: 11.0.5 2886 3965 3966 + reusify@1.1.0: {} 3967 + 2887 3968 rollup@4.45.3: 2888 3969 dependencies: 2889 3970 '@types/estree': 1.0.8 ··· 2910 3991 '@rollup/rollup-win32-x64-msvc': 4.45.3 2911 3992 fsevents: 2.3.3 2912 3993 3994 + run-parallel@1.2.0: 3995 + dependencies: 3996 + queue-microtask: 1.2.3 3997 + 3998 + s.color@0.0.15: {} 3999 + 4000 + sass-formatter@0.7.9: 4001 + dependencies: 4002 + suf-log: 2.5.3 4003 + 2913 4004 semver@7.7.2: {} 2914 4005 2915 4006 sharp@0.33.5: ··· 2938 4029 '@img/sharp-win32-ia32': 0.33.5 2939 4030 '@img/sharp-win32-x64': 0.33.5 2940 4031 optional: true 4032 + 4033 + shebang-command@2.0.0: 4034 + dependencies: 4035 + shebang-regex: 3.0.0 4036 + 4037 + shebang-regex@3.0.0: {} 2941 4038 2942 4039 shiki@3.8.1: 2943 4040 dependencies: ··· 2988 4085 dependencies: 2989 4086 ansi-regex: 6.1.0 2990 4087 4088 + strip-json-comments@3.1.1: {} 4089 + 4090 + suf-log@2.5.3: 4091 + dependencies: 4092 + s.color: 0.0.15 4093 + 4094 + supports-color@7.2.0: 4095 + dependencies: 4096 + has-flag: 4.0.0 4097 + 4098 + synckit@0.11.11: 4099 + dependencies: 4100 + '@pkgr/core': 0.2.9 4101 + 2991 4102 tiny-inflate@1.0.3: {} 2992 4103 2993 4104 tinyexec@0.3.2: {} ··· 2996 4107 dependencies: 2997 4108 fdir: 6.4.6(picomatch@4.0.3) 2998 4109 picomatch: 4.0.3 4110 + 4111 + to-regex-range@5.0.1: 4112 + dependencies: 4113 + is-number: 7.0.0 2999 4114 3000 4115 tr46@0.0.3: {} 3001 4116 3002 4117 trim-lines@3.0.1: {} 3003 4118 3004 4119 trough@2.2.0: {} 4120 + 4121 + ts-api-utils@2.1.0(typescript@5.8.3): 4122 + dependencies: 4123 + typescript: 5.8.3 3005 4124 3006 4125 tsconfck@3.1.6(typescript@5.8.3): 3007 4126 optionalDependencies: ··· 3009 4128 3010 4129 tslib@2.8.1: {} 3011 4130 4131 + type-check@0.4.0: 4132 + dependencies: 4133 + prelude-ls: 1.2.1 4134 + 3012 4135 type-fest@4.41.0: {} 4136 + 4137 + typescript-eslint@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3): 4138 + dependencies: 4139 + '@typescript-eslint/eslint-plugin': 8.38.0(@typescript-eslint/parser@8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3))(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 4140 + '@typescript-eslint/parser': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 4141 + '@typescript-eslint/typescript-estree': 8.38.0(typescript@5.8.3) 4142 + '@typescript-eslint/utils': 8.38.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.8.3) 4143 + eslint: 9.32.0(jiti@2.5.1) 4144 + typescript: 5.8.3 4145 + transitivePeerDependencies: 4146 + - supports-color 3013 4147 3014 4148 typescript@5.8.3: {} 3015 4149 ··· 3100 4234 ofetch: 1.4.1 3101 4235 ufo: 1.6.1 3102 4236 4237 + uri-js@4.4.1: 4238 + dependencies: 4239 + punycode: 2.3.1 4240 + 4241 + util-deprecate@1.0.2: {} 4242 + 3103 4243 vfile-location@5.0.3: 3104 4244 dependencies: 3105 4245 '@types/unist': 3.0.3 ··· 3115 4255 '@types/unist': 3.0.3 3116 4256 vfile-message: 4.0.3 3117 4257 3118 - vite@6.3.5(@types/node@24.1.0): 4258 + vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1): 3119 4259 dependencies: 3120 4260 esbuild: 0.25.8 3121 4261 fdir: 6.4.6(picomatch@4.0.3) ··· 3126 4266 optionalDependencies: 3127 4267 '@types/node': 24.1.0 3128 4268 fsevents: 2.3.3 4269 + jiti: 2.5.1 3129 4270 3130 - vitefu@1.1.1(vite@6.3.5(@types/node@24.1.0)): 4271 + vitefu@1.1.1(vite@6.3.5(@types/node@24.1.0)(jiti@2.5.1)): 3131 4272 optionalDependencies: 3132 - vite: 6.3.5(@types/node@24.1.0) 4273 + vite: 6.3.5(@types/node@24.1.0)(jiti@2.5.1) 3133 4274 3134 4275 web-namespaces@2.0.1: {} 3135 4276 ··· 3142 4283 3143 4284 which-pm-runs@1.1.0: {} 3144 4285 4286 + which@2.0.2: 4287 + dependencies: 4288 + isexe: 2.0.0 4289 + 3145 4290 widest-line@5.0.0: 3146 4291 dependencies: 3147 4292 string-width: 7.2.0 4293 + 4294 + word-wrap@1.2.5: {} 3148 4295 3149 4296 wrap-ansi@9.0.0: 3150 4297 dependencies: ··· 3155 4302 xxhash-wasm@1.1.0: {} 3156 4303 3157 4304 yargs-parser@21.1.1: {} 4305 + 4306 + yocto-queue@0.1.0: {} 3158 4307 3159 4308 yocto-queue@1.2.1: {} 3160 4309
+19 -14
frontend/src/components/Clip.astro
··· 1 1 --- 2 2 import TagList from "./TagList.astro"; 3 - const { title, tagList, link, description, originalClipper, firstClipDate } = Astro.props; 3 + const { title, tagList, link, description, originalClipper, firstClipDate } = 4 + Astro.props; 4 5 --- 6 + 5 7 <div class="clip"> 6 - <div class="clip-head"> 7 - <h2 class="clip-title"><a href={link}>{title}</a></h2> 8 - <TagList tags={tagList} /> 9 - </div> 10 - <small class="clip-link"><a href={link}>{link}</a></small> 11 - <p class="clip-description">{description}</p> 12 - <div class="clip-actions"> 13 - <a href="#">clip</a> 14 - <a href="#">respond</a> 15 - <a href="#">hide</a> 16 - <span class="original-clipper">[first clipped by <a href="#">@{originalClipper}</a> {firstClipDate} ago]</span> 17 - </div> 18 - </div> 8 + <div class="clip-head"> 9 + <h2 class="clip-title"><a href={link}>{title}</a></h2> 10 + <TagList tags={tagList} /> 11 + </div> 12 + <small class="clip-link"><a href={link}>{link}</a></small> 13 + <p class="clip-description">{description}</p> 14 + <div class="clip-actions"> 15 + <a href="#">clip</a> 16 + <a href="#">respond</a> 17 + <a href="#">hide</a> 18 + <span class="original-clipper" 19 + >[first clipped by <a href="#">@{originalClipper}</a> 20 + {firstClipDate} ago]</span 21 + > 22 + </div> 23 + </div>
+6 -5
frontend/src/components/SidebarItem.astro
··· 1 1 --- 2 - const {title} = Astro.props; 2 + const { title } = Astro.props; 3 3 --- 4 + 4 5 <div class="sidebar-item"> 5 - <h2>{title}</h2> 6 - <div class="sidebar-content"> 7 - <slot /> 8 - </div> 6 + <h2>{title}</h2> 7 + <div class="sidebar-content"> 8 + <slot /> 9 + </div> 9 10 </div>
+6 -7
frontend/src/components/TagList.astro
··· 1 1 --- 2 - const {tags} = Astro.props; 2 + const { tags } = Astro.props; 3 3 let tags_arr; 4 - if (typeof tags !== 'undefined') { 5 - tags_arr = tags.split(','); 4 + if (typeof tags !== "undefined") { 5 + tags_arr = tags.split(","); 6 6 } 7 7 --- 8 + 8 9 <div class="clip-tags"> 9 - { 10 - tags_arr?.map((element: string) => (<small>{element}</small>)) 11 - } 12 - </div> 10 + {tags_arr?.map((element: string) => <small>{element}</small>)} 11 + </div>
+10 -9
frontend/src/layouts/Base.astro
··· 1 1 --- 2 2 const { title } = Astro.props; 3 - import '../styles/main.css'; 3 + import "../styles/main.css"; 4 4 --- 5 + 5 6 <!doctype html> 6 7 <!-- 7 8 * clippr: a social bookmarking service for the AT Protocol ··· 9 10 * SPDX-License-Identifier: AGPL-3.0-only 10 11 --> 11 12 <html lang="en"> 12 - <head> 13 - <meta charset="UTF-8"/> 14 - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 15 - <title>{title} | clippr</title> 16 - </head> 17 - <body> 18 - <slot /> 19 - </body> 13 + <head> 14 + <meta charset="UTF-8" /> 15 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 16 + <title>{title} | clippr</title> 17 + </head> 18 + <body> 19 + <slot /> 20 + </body> 20 21 </html>
+17 -13
frontend/src/layouts/Footer.astro
··· 1 1 --- 2 + 2 3 --- 4 + 3 5 <footer> 4 - <small> 5 - shoutout popbob! | © 2025 clippr contributors | <a href="https://tangled.sh/@noob.quest/clippr">source code</a> 6 - </small> 6 + <small> 7 + shoutout popbob! | © 2025 clippr contributors | <a 8 + href="https://tangled.sh/@noob.quest/clippr">source code</a 9 + > 10 + </small> 7 11 </footer> 8 12 9 13 <style> 10 - footer { 11 - background-color: #ddd; 12 - padding: 1em 0; 13 - color: black; 14 - text-align: center; 14 + footer { 15 + background-color: #ddd; 16 + padding: 1em 0; 17 + color: black; 18 + text-align: center; 15 19 16 - a { 17 - color: revert; 18 - } 19 - } 20 - </style> 20 + a { 21 + color: revert; 22 + } 23 + } 24 + </style>
+9 -7
frontend/src/layouts/Header.astro
··· 1 1 --- 2 + 2 3 --- 4 + 3 5 <header id="header-navbar"> 4 - <h1>clippr (beta!)</h1> 5 - <ul> 6 - <li><a href="/">home</a></li> 7 - <li><a href="/about">about</a></li> 8 - <li><a href="/login">login</a></li> 9 - </ul> 10 - </header> 6 + <h1>clippr (beta!)</h1> 7 + <ul> 8 + <li><a href="/">home</a></li> 9 + <li><a href="/about">about</a></li> 10 + <li><a href="/login">login</a></li> 11 + </ul> 12 + </header>
+23 -21
frontend/src/pages/404.astro
··· 3 3 import Header from "../layouts/Header.astro"; 4 4 import Footer from "../layouts/Footer.astro"; 5 5 --- 6 + 6 7 <Base title="404"> 7 - <Header/> 8 - <main class="404-page"> 9 - <h2>404 | page not found</h2> 10 - <p>the party seems to be over...</p> 11 - <a href="/">« go home</a> 12 - </main> 13 - <Footer/> 8 + <Header /> 9 + <main class="404-page"> 10 + <h2>404 | page not found</h2> 11 + <p>the party seems to be over...</p> 12 + <a href="/">« go home</a> 13 + </main> 14 + <Footer /> 14 15 </Base> 15 16 16 17 <style> 17 - main { 18 - display: flex !important; 19 - flex-direction: column !important; 20 - gap: 0.1rem; 21 - align-items: center; 22 - justify-content: center; 23 - } 18 + main { 19 + display: flex !important; 20 + flex-direction: column !important; 21 + gap: 0.1rem; 22 + align-items: center; 23 + justify-content: center; 24 + } 24 25 25 - h2, p { 26 - margin: 0.5rem 0; 27 - } 26 + h2, 27 + p { 28 + margin: 0.5rem 0; 29 + } 28 30 29 - a { 30 - color: revert; 31 - } 32 - </style> 31 + a { 32 + color: revert; 33 + } 34 + </style>
+7 -6
frontend/src/pages/about.astro
··· 3 3 import Header from "../layouts/Header.astro"; 4 4 import Footer from "../layouts/Footer.astro"; 5 5 --- 6 + 6 7 <Base title="about"> 7 - <Header/> 8 - <main> 9 - <p>Fill in later!</p> 10 - </main> 11 - <Footer/> 12 - </Base> 8 + <Header /> 9 + <main> 10 + <p>Fill in later!</p> 11 + </main> 12 + <Footer /> 13 + </Base>
+38 -29
frontend/src/pages/index.astro
··· 1 1 --- 2 - import Base from '../layouts/Base.astro'; 2 + import Base from "../layouts/Base.astro"; 3 3 import Header from "../layouts/Header.astro"; 4 4 import Footer from "../layouts/Footer.astro"; 5 5 import Clip from "../components/Clip.astro"; 6 6 import SidebarItem from "../components/SidebarItem.astro"; 7 7 --- 8 + 8 9 <Base title="home"> 9 - <Header/> 10 - <main> 11 - <div id="main-content"> 12 - <div id="clip-list"> 13 - <Clip title="google" link="https://google.com" tagList="technology,search,google" 14 - description="tests woah" 15 - originalClipper="popbob.com" firstClipDate="30m"/> 16 - </div> 17 - </div> 18 - <div id="sidebar"> 19 - <SidebarItem title="what is clippr?"> 20 - <p>clippr is a bookmarking site that doubles as a news aggregator.</p> 21 - <p>using your bookmarks (or "clips") and their associated tags, a constantly updated news feed is 22 - created based on what users are clipping to their collection.</p> 23 - <a href="/about">learn more »</a> 24 - </SidebarItem> 25 - <SidebarItem title="stats"> 26 - <h3>clips</h3> 27 - <p class="item-counter">0</p> 28 - <h3>sites</h3> 29 - <p class="item-counter">0</p> 30 - <h3>users</h3> 31 - <p class="item-counter">0</p> 32 - </SidebarItem> 33 - </div> 34 - </main> 35 - <Footer/> 36 - </Base> 10 + <Header /> 11 + <main> 12 + <div id="main-content"> 13 + <div id="clip-list"> 14 + <Clip 15 + title="google" 16 + link="https://google.com" 17 + tagList="technology,search,google" 18 + description="tests woah" 19 + originalClipper="popbob.com" 20 + firstClipDate="30m" 21 + /> 22 + </div> 23 + </div> 24 + <div id="sidebar"> 25 + <SidebarItem title="what is clippr?"> 26 + <p>clippr is a bookmarking site that doubles as a news aggregator.</p> 27 + <p> 28 + using your bookmarks (or "clips") and their associated tags, a 29 + constantly updated news feed is created based on what users are 30 + clipping to their collection. 31 + </p> 32 + <a href="/about">learn more »</a> 33 + </SidebarItem> 34 + <SidebarItem title="stats"> 35 + <h3>clips</h3> 36 + <p class="item-counter">0</p> 37 + <h3>sites</h3> 38 + <p class="item-counter">0</p> 39 + <h3>users</h3> 40 + <p class="item-counter">0</p> 41 + </SidebarItem> 42 + </div> 43 + </main> 44 + <Footer /> 45 + </Base>
+83 -77
frontend/src/pages/login.astro
··· 1 1 --- 2 - import Base from '../layouts/Base.astro'; 2 + import Base from "../layouts/Base.astro"; 3 3 import Header from "../layouts/Header.astro"; 4 4 import Footer from "../layouts/Footer.astro"; 5 5 --- 6 + 6 7 <Base title="login"> 7 - <Header/> 8 - <main> 9 - <div id="oauth-login"> 10 - <h2>log in</h2> 11 - <p>Enter your Bluesky handle.</p> 12 - <form> 13 - <label for="handle">handle</label> 14 - <input type="text" id="handle" name="handle" placeholder="handle"> 15 - <input type="submit" value="Authenticate"> 16 - </form> 17 - </div> 18 - <!--<p id="or">or...</p>--> 19 - <!--<div id="bluesky-login">--> 20 - <!-- <h2>use your bluesky account</h2>--> 21 - <!-- <button id="bluesky-login-button">login to bluesky</button>--> 22 - <!--</div>--> 23 - </main> 24 - <Footer/> 8 + <Header /> 9 + <main> 10 + <div id="oauth-login"> 11 + <h2>log in</h2> 12 + <p>Enter your Bluesky handle.</p> 13 + <form> 14 + <label for="handle">handle</label> 15 + <input 16 + type="text" 17 + id="handle" 18 + name="handle" 19 + placeholder="clippr.social" 20 + /> 21 + <input type="submit" value="Authenticate" /> 22 + </form> 23 + </div> 24 + <!--<p id="or">or...</p>--> 25 + <!--<div id="bluesky-login">--> 26 + <!-- <h2>use your bluesky account</h2>--> 27 + <!-- <button id="bluesky-login-button">login to bluesky</button>--> 28 + <!--</div>--> 29 + </main> 30 + <Footer /> 25 31 </Base> 26 32 27 33 <style> 28 - main { 29 - display: flex !important; 30 - flex-direction: column; 31 - align-items: center; 32 - justify-content: center; 33 - gap: 1rem; 34 - } 34 + main { 35 + display: flex !important; 36 + flex-direction: column; 37 + align-items: center; 38 + justify-content: center; 39 + gap: 1rem; 40 + } 35 41 36 - form { 37 - display: flex; 38 - flex-direction: column; 39 - justify-content: center; 42 + form { 43 + display: flex; 44 + flex-direction: column; 45 + justify-content: center; 40 46 41 - label { 42 - text-align: center; 43 - font-weight: bold; 44 - margin-bottom: 0.5rem; 45 - } 47 + label { 48 + text-align: center; 49 + font-weight: bold; 50 + margin-bottom: 0.5rem; 51 + } 46 52 47 - input[type="submit"] { 48 - margin: 1rem 0 0 0; 49 - padding: 0.5rem 0; 50 - width: 50%; 51 - align-self: center; 52 - } 53 - } 53 + input[type="submit"] { 54 + margin: 1rem 0 0 0; 55 + padding: 0.5rem 0; 56 + width: 50%; 57 + align-self: center; 58 + } 59 + } 54 60 55 - a { 56 - color: revert; 57 - } 61 + a { 62 + color: revert; 63 + } 58 64 59 - #or { 60 - border: 2px black solid; 61 - padding: 0.5rem 2rem; 62 - margin: 0; 63 - font-weight: bold; 64 - } 65 + #or { 66 + border: 2px black solid; 67 + padding: 0.5rem 2rem; 68 + margin: 0; 69 + font-weight: bold; 70 + } 65 71 66 - h2 { 67 - text-align: center; 68 - } 72 + h2 { 73 + text-align: center; 74 + margin-top: 0; 75 + } 69 76 70 - #bluesky-login { 71 - display: flex; 72 - flex-direction: column; 73 - justify-content: center; 74 - align-items: center; 77 + #bluesky-login { 78 + display: flex; 79 + flex-direction: column; 80 + justify-content: center; 81 + align-items: center; 75 82 76 - h2 { 77 - margin: 1rem 0; 78 - margin-top: 0; 79 - } 80 - } 83 + h2 { 84 + margin: 0 0 1rem; 85 + } 86 + } 81 87 82 - #bluesky-login-button { 83 - background: linear-gradient(deepskyblue, lightskyblue); 84 - border: none; 85 - border-radius: 10px; 86 - font-weight: bold; 87 - padding: 1rem 2rem; 88 - } 88 + #bluesky-login-button { 89 + background: linear-gradient(deepskyblue, lightskyblue); 90 + border: none; 91 + border-radius: 10px; 92 + font-weight: bold; 93 + padding: 1rem 2rem; 94 + } 89 95 90 - #bluesky-login-button:hover { 91 - cursor: pointer; 92 - filter: brightness(90%); 93 - transition: filter 0.3s ease-in-out; 94 - } 95 - </style> 96 + #bluesky-login-button:hover { 97 + cursor: pointer; 98 + filter: brightness(90%); 99 + transition: filter 0.3s ease-in-out; 100 + } 101 + </style>
+120 -120
frontend/src/styles/main.css
··· 5 5 */ 6 6 7 7 body { 8 - margin: 2rem auto; 9 - font-family: Arial, sans-serif; 10 - background-color: #bbb; 11 - width: 63%; 8 + margin: 2rem auto; 9 + font-family: Arial, sans-serif; 10 + background-color: #bbb; 11 + width: 63%; 12 12 } 13 13 14 14 @media (max-width: 768px) { 15 - body { 16 - margin: auto; 17 - width: 100%; 18 - } 15 + body { 16 + margin: auto; 17 + width: 100%; 18 + } 19 19 } 20 20 21 21 header { 22 - background-image: linear-gradient(#455372, #2b3854); 23 - color: white; 24 - display: flex; 25 - flex-direction: row; 26 - align-items: center; 27 - justify-content: space-between; 28 - padding: 0.5rem 1rem; 22 + background-image: linear-gradient(#455372, #2b3854); 23 + color: white; 24 + display: flex; 25 + flex-direction: row; 26 + align-items: center; 27 + justify-content: space-between; 28 + padding: 0.5rem 1rem; 29 29 30 - h1 { 31 - font-size: 1rem; 32 - } 30 + h1 { 31 + font-size: 1rem; 32 + } 33 33 34 - ul { 35 - list-style-type: none; 36 - margin: 0; 37 - display: flex; 38 - flex-direction: row; 39 - gap: 1.5rem; 40 - } 34 + ul { 35 + list-style-type: none; 36 + margin: 0; 37 + display: flex; 38 + flex-direction: row; 39 + gap: 1.5rem; 40 + } 41 41 } 42 42 43 43 a { 44 - text-decoration: none; 45 - color: white; 44 + text-decoration: none; 45 + color: white; 46 46 } 47 47 48 48 a:hover { 49 - font-style: italic; 49 + font-style: italic; 50 + font-weight: bold; 50 51 } 51 52 52 53 main { 53 - background-color: white; 54 - background-clip: border-box; 55 - padding: 1rem 0.5rem; 54 + background-color: white; 55 + background-clip: border-box; 56 + padding: 1rem 0.5rem; 56 57 57 - display: grid; 58 - grid-template-columns: 70% 30%; 58 + display: grid; 59 + grid-template-columns: 70% 30%; 59 60 } 60 61 61 62 #clip-list { 62 - margin: 0 0.5rem; 63 + margin: 0 0.5rem; 63 64 64 - .clip:first-of-type { 65 - margin: 0; 66 - } 65 + .clip:first-of-type { 66 + margin: 0; 67 + } 67 68 68 - .clip { 69 - margin: 1.5rem 0; 70 - } 69 + .clip { 70 + margin: 1.5rem 0; 71 + } 71 72 } 72 73 73 74 .clip { 74 - display: grid; 75 - grid-template-columns: auto; 76 - grid-template-rows: auto; 77 - grid-gap: 0.5rem; 75 + display: grid; 76 + grid-template-columns: auto; 77 + grid-template-rows: auto; 78 + grid-gap: 0.5rem; 78 79 79 - a { 80 - color: revert; 81 - } 80 + a { 81 + color: revert; 82 + } 82 83 83 - .clip-head { 84 - display: flex; 85 - flex-direction: row; 86 - align-items: center; 87 - gap: 1rem; 84 + .clip-head { 85 + display: flex; 86 + flex-direction: row; 87 + align-items: center; 88 + gap: 1rem; 88 89 89 - h2 { 90 - margin: 0; 91 - } 90 + h2 { 91 + margin: 0; 92 + } 92 93 93 - grid-column: 1; 94 - grid-row: 1; 95 - } 94 + grid-column: 1; 95 + grid-row: 1; 96 + } 96 97 97 - .clip-link { 98 - grid-column: 1; 99 - grid-row: 2; 100 - } 98 + .clip-link { 99 + grid-column: 1; 100 + grid-row: 2; 101 + } 101 102 102 - .clip-description { 103 - grid-column: 1; 104 - grid-row: 3; 103 + .clip-description { 104 + grid-column: 1; 105 + grid-row: 3; 105 106 106 - font-size: 0.8rem; 107 - margin: 0.25rem 0; 108 - } 107 + font-size: 0.8rem; 108 + margin: 0.25rem 0; 109 + } 109 110 110 - .clip-tags { 111 - margin: 0; 112 - } 111 + .clip-tags { 112 + margin: 0; 113 + } 113 114 114 - .clip-tags * { 115 - background: linear-gradient(#ffe076, #fff0cb) !important; 116 - padding: 0.25rem; 117 - margin: 0 0.25rem !important; 118 - border-radius: 0.34rem; 119 - border: 0.09rem solid black; 120 - } 115 + .clip-tags * { 116 + background: linear-gradient(#ffe076, #fff0cb) !important; 117 + padding: 0.25rem; 118 + margin: 0 0.25rem !important; 119 + border-radius: 0.34rem; 120 + border: 0.09rem solid black; 121 + } 121 122 122 - .clip-actions { 123 - display: flex; 124 - flex-direction: row; 125 - gap: 0.5rem; 126 - font-size: 0.8rem; 123 + .clip-actions { 124 + display: flex; 125 + flex-direction: row; 126 + gap: 0.5rem; 127 + font-size: 0.8rem; 127 128 128 - grid-column: 1; 129 - grid-row: 4; 130 - } 129 + grid-column: 1; 130 + grid-row: 4; 131 + } 131 132 132 - .original-clipper { 133 - color: #777 !important; 134 - } 133 + .original-clipper { 134 + color: #777 !important; 135 + } 135 136 } 136 137 137 138 #sidebar { 138 - margin: 0 1rem; 139 + margin: 0 1rem; 139 140 } 140 141 141 142 .sidebar-content { 142 - background-color: #bbbbbb; 143 - display: flex; 144 - flex-direction: column; 145 - align-items: center; 146 - justify-content: center; 143 + background-color: #bbbbbb; 144 + display: flex; 145 + flex-direction: column; 146 + align-items: center; 147 + justify-content: center; 147 148 148 - h3, p { 149 - margin: 0.5rem; 150 - } 149 + h3, 150 + p { 151 + margin: 0.5rem; 152 + } 151 153 152 - .item-counter { 153 - font-size: 2rem; 154 - } 154 + .item-counter { 155 + font-size: 2rem; 156 + } 155 157 } 156 158 157 159 .sidebar-item { 158 - padding: 0.5rem 0; 160 + padding: 0.5rem 0; 159 161 160 - h2 { 161 - margin: 0.5rem 0; 162 - } 162 + h2 { 163 + margin: 0.5rem 0; 164 + } 163 165 164 - a { 165 - align-self: start; 166 - color: revert; 167 - padding: 0.5rem 0.5rem; 168 - } 166 + a { 167 + align-self: start; 168 + color: revert; 169 + padding: 0.5rem 0.5rem; 170 + } 169 171 170 - a:hover { 171 - font-style: revert; 172 - text-decoration: underline; 173 - } 172 + a:hover { 173 + font-style: revert; 174 + text-decoration: underline; 175 + } 174 176 } 175 177 176 178 .sidebar-item:first-of-type { 177 - padding-top: 0; 179 + padding-top: 0; 178 180 179 - h2 { 180 - margin-top: 0; 181 - } 181 + h2 { 182 + margin-top: 0; 183 + } 182 184 } 183 - 184 -
+3 -3
frontend/tsconfig.json
··· 1 1 { 2 - "extends": "astro/tsconfigs/strictest", 3 - "include": [".astro/types.d.ts", "**/*"], 4 - "exclude": ["dist"] 2 + "extends": "astro/tsconfigs/strictest", 3 + "include": [".astro/types.d.ts", "**/*"], 4 + "exclude": ["dist"], 5 5 }