Shows how to get repo export and walk it in TypeScript walktherepo.wisp.place

Compare changes

Choose any two refs to compare.

.tangled/images/apiWalk.jpg

This is a binary file and will not be displayed.

.tangled/images/carWalk.jpg

This is a binary file and will not be displayed.

+13 -2
README.md
··· 1 - # WIP 1 + # Walk The Repo 2 + 3 + demo: [https://walktherepo.wisp.place](https://walktherepo.wisp.place/) 4 + 5 + A demo showing how to use [@atcute](https://github.com/mary-ext/atcute) to download a user's repo and "walk" it to access all the records inside of it faster than you would via multiple api calls. 6 + If you're just wanting to see that code directly it's [here](https://tangled.org/baileytownsend.dev/repo-walk-example/blob/main/src/lib/RepoStats.svelte#L56). 7 + 8 + Comparisons using my repo as an example. 9 + 10 + Repo Export 11 + ![](./.tangled/images/carWalk.jpg) 2 12 3 - Will show how to get a users repo and walk it so you don't do 10 billion list records calls 13 + API Calls 14 + ![](./.tangled/images/apiWalk.jpg)
+45
eslint.config.js
··· 1 + import { fileURLToPath } from 'node:url'; 2 + import { includeIgnoreFile } from '@eslint/compat'; 3 + import js from '@eslint/js'; 4 + import svelte from 'eslint-plugin-svelte'; 5 + import { defineConfig } from 'eslint/config'; 6 + import globals from 'globals'; 7 + import ts from 'typescript-eslint'; 8 + import svelteConfig from './svelte.config.js'; 9 + 10 + const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); 11 + 12 + export default defineConfig( 13 + includeIgnoreFile(gitignorePath), 14 + js.configs.recommended, 15 + ...ts.configs.recommended, 16 + ...svelte.configs.recommended, 17 + { 18 + languageOptions: { 19 + globals: { ...globals.browser, ...globals.node } 20 + }, 21 + rules: { // typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects. 22 + // see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors 23 + 'no-undef': 'off', 24 + 'quotes': ['error', 'single'], 25 + 'semi': ['error', 'always'], 26 + 'object-curly-spacing': ['error', 'always'] 27 + } 28 + }, 29 + { 30 + files: [ 31 + '**/*.svelte', 32 + '**/*.svelte.ts', 33 + '**/*.svelte.js' 34 + ], 35 + languageOptions: { 36 + parserOptions: { 37 + projectService: true, 38 + extraFileExtensions: ['.svelte'], 39 + parser: ts.parser, 40 + svelteConfig 41 + } 42 + } 43 + } 44 + ); 45 +
+7 -3
index.html
··· 1 1 <!doctype html> 2 2 <html lang="en"> 3 - <head> 3 + <head data-theme="forest"> 4 4 <meta charset="UTF-8" /> 5 - <link rel="icon" type="image/svg+xml" href="/vite.svg" /> 5 + <link rel="icon" type="image/svg+xml" href="/dude.png" /> 6 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 - <title>repo-walk-example</title> 7 + <title>Repo Walking</title> 8 + <meta name="og:title" content="Repo Walking"> 9 + <meta name="description" content="Walk the repo, count the records."> 10 + <meta name="og:description" content="Walk the repo, count the records."> 11 + 8 12 </head> 9 13 <body> 10 14 <div id="app"></div>
-46
lexicons/com/atproto/sync/getRepo.json
··· 1 - { 2 - "id": "com.atproto.sync.getRepo", 3 - "defs": { 4 - "main": { 5 - "type": "query", 6 - "errors": [ 7 - { 8 - "name": "RepoNotFound" 9 - }, 10 - { 11 - "name": "RepoTakendown" 12 - }, 13 - { 14 - "name": "RepoSuspended" 15 - }, 16 - { 17 - "name": "RepoDeactivated" 18 - } 19 - ], 20 - "output": { 21 - "encoding": "application/vnd.ipld.car" 22 - }, 23 - "parameters": { 24 - "type": "params", 25 - "required": [ 26 - "did" 27 - ], 28 - "properties": { 29 - "did": { 30 - "type": "string", 31 - "format": "did", 32 - "description": "The DID of the repo." 33 - }, 34 - "since": { 35 - "type": "string", 36 - "format": "tid", 37 - "description": "The revision ('rev') of the repo to create a diff from." 38 - } 39 - } 40 - }, 41 - "description": "Download a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS." 42 - } 43 - }, 44 - "$type": "com.atproto.lexicon.schema", 45 - "lexicon": 1 46 - }
-12
lexicons.json
··· 1 - { 2 - "version": 1, 3 - "lexicons": [ 4 - "com.atproto.sync.getRepo" 5 - ], 6 - "resolutions": { 7 - "com.atproto.sync.getRepo": { 8 - "uri": "at://did:plc:6msi3pj7krzih5qxqtryxlzw/com.atproto.lexicon.schema/com.atproto.sync.getRepo", 9 - "cid": "bafyreieyt5x6wf4pgcn56tb2724uplmwcqjivkubmi25km3xrvroz6dw5q" 10 - } 11 - } 12 - }
+17 -5
package.json
··· 7 7 "dev": "vite", 8 8 "build": "vite build", 9 9 "preview": "vite preview", 10 - "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json" 10 + "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json", 11 + "lint": "eslint ." 11 12 }, 12 13 "devDependencies": { 13 14 "@sveltejs/vite-plugin-svelte": "^6.2.1", 14 15 "@tsconfig/svelte": "^5.0.6", 15 16 "@types/node": "^24.10.1", 17 + "daisyui": "^5.5.14", 16 18 "svelte": "^5.43.8", 17 19 "svelte-check": "^4.3.4", 18 20 "typescript": "~5.9.3", 19 21 "vite": "^7.2.4" 20 22 }, 21 23 "dependencies": { 22 - "@atproto-labs/did-resolver": "^0.2.5", 23 - "@atproto-labs/handle-resolver": "^0.3.5", 24 - "@atproto/identity": "^0.4.10", 25 - "@atproto/lex": "^0.0.10" 24 + "@atcute/atproto": "^3.1.10", 25 + "@atcute/client": "^4.2.1", 26 + "@atcute/identity": "^1.1.3", 27 + "@atcute/identity-resolver": "^1.2.2", 28 + "@atcute/lexicons": "^1.2.6", 29 + "@atcute/repo": "^0.1.1", 30 + "@eslint/compat": "^2.0.0", 31 + "@eslint/js": "^9.39.2", 32 + "@tailwindcss/vite": "^4.1.18", 33 + "eslint": "^9.39.2", 34 + "eslint-plugin-svelte": "^3.14.0", 35 + "globals": "^17.0.0", 36 + "tailwindcss": "^4.1.18", 37 + "typescript-eslint": "^8.52.0" 26 38 } 27 39 }
+1367 -495
pnpm-lock.yaml
··· 8 8 9 9 .: 10 10 dependencies: 11 - '@atproto-labs/did-resolver': 12 - specifier: ^0.2.5 13 - version: 0.2.5 14 - '@atproto-labs/handle-resolver': 15 - specifier: ^0.3.5 16 - version: 0.3.5 17 - '@atproto/identity': 18 - specifier: ^0.4.10 19 - version: 0.4.10 20 - '@atproto/lex': 21 - specifier: ^0.0.10 22 - version: 0.0.10 11 + '@atcute/atproto': 12 + specifier: ^3.1.10 13 + version: 3.1.10 14 + '@atcute/client': 15 + specifier: ^4.2.1 16 + version: 4.2.1 17 + '@atcute/identity': 18 + specifier: ^1.1.3 19 + version: 1.1.3 20 + '@atcute/identity-resolver': 21 + specifier: ^1.2.2 22 + version: 1.2.2(@atcute/identity@1.1.3) 23 + '@atcute/lexicons': 24 + specifier: ^1.2.6 25 + version: 1.2.6 26 + '@atcute/repo': 27 + specifier: ^0.1.1 28 + version: 0.1.1 29 + '@eslint/compat': 30 + specifier: ^2.0.0 31 + version: 2.0.0(eslint@9.39.2(jiti@2.6.1)) 32 + '@eslint/js': 33 + specifier: ^9.39.2 34 + version: 9.39.2 35 + '@tailwindcss/vite': 36 + specifier: ^4.1.18 37 + version: 4.1.18(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)) 38 + eslint: 39 + specifier: ^9.39.2 40 + version: 9.39.2(jiti@2.6.1) 41 + eslint-plugin-svelte: 42 + specifier: ^3.14.0 43 + version: 3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.46.1) 44 + globals: 45 + specifier: ^17.0.0 46 + version: 17.0.0 47 + tailwindcss: 48 + specifier: ^4.1.18 49 + version: 4.1.18 50 + typescript-eslint: 51 + specifier: ^8.52.0 52 + version: 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 23 53 devDependencies: 24 54 '@sveltejs/vite-plugin-svelte': 25 55 specifier: ^6.2.1 26 - version: 6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)) 56 + version: 6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)) 27 57 '@tsconfig/svelte': 28 58 specifier: ^5.0.6 29 59 version: 5.0.6 30 60 '@types/node': 31 61 specifier: ^24.10.1 32 62 version: 24.10.4 63 + daisyui: 64 + specifier: ^5.5.14 65 + version: 5.5.14 33 66 svelte: 34 67 specifier: ^5.43.8 35 68 version: 5.46.1 ··· 41 74 version: 5.9.3 42 75 vite: 43 76 specifier: ^7.2.4 44 - version: 7.3.1(@types/node@24.10.4) 77 + version: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2) 45 78 46 79 packages: 47 80 48 - '@atproto-labs/did-resolver@0.2.5': 49 - resolution: {integrity: sha512-he7EC6OMSifNs01a4RT9mta/yYitoKDzlK9ty2TFV5Uj/+HpB4vYMRdIDFrRW0Hcsehy90E2t/dw0t7361MEKQ==} 81 + '@atcute/atproto@3.1.10': 82 + resolution: {integrity: sha512-+GKZpOc0PJcdWMQEkTfg/rSNDAAHxmAUGBl60g2az15etqJn5WaUPNGFE2sB7hKpwi5Ue2h/L0OacINcE/JDDQ==} 50 83 51 - '@atproto-labs/fetch@0.2.3': 52 - resolution: {integrity: sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw==} 84 + '@atcute/car@5.0.0': 85 + resolution: {integrity: sha512-OIY2xTXv8lSpZsDSn/UYQtJSMvDw5Hi4Q+uyvmiqSM+fht08QRAEq/nxa5YFciPZ3nfDFnZ3//EgJw7QhkSXLQ==} 53 86 54 - '@atproto-labs/handle-resolver@0.3.5': 55 - resolution: {integrity: sha512-r3b+plCh/0arN535Aool9gL6yTSbAPDOyReURbA2TWAaeW4vrSJPwR6yYUx0k0vmVPjkZPIdUVd63bG/+VG5MA==} 87 + '@atcute/cbor@2.2.8': 88 + resolution: {integrity: sha512-UzOAN9BuN6JCXgn0ryV8qZuRJUDrNqrbLd6EFM8jc6RYssjRyGRxNy6RZ1NU/07Hd8Tq/0pz8+nQiMu5Zai5uw==} 56 89 57 - '@atproto-labs/pipe@0.1.1': 58 - resolution: {integrity: sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg==} 90 + '@atcute/cid@2.3.0': 91 + resolution: {integrity: sha512-1SRdkTuMs/l5arQ+7Ag0F7JAueZqtzYE0d2gmbkuzi8EPweNU1kYlQs0CE4dSd81YF8PMDTOQty0K2ATq9CW9g==} 59 92 60 - '@atproto-labs/simple-store-memory@0.1.4': 61 - resolution: {integrity: sha512-3mKY4dP8I7yKPFj9VKpYyCRzGJOi5CEpOLPlRhoJyLmgs3J4RzDrjn323Oakjz2Aj2JzRU/AIvWRAZVhpYNJHw==} 93 + '@atcute/client@4.2.1': 94 + resolution: {integrity: sha512-ZBFM2pW075JtgGFu5g7HHZBecrClhlcNH8GVP9Zz1aViWR+cjjBsTpeE63rJs+FCOHFYlirUyo5L8SGZ4kMINw==} 62 95 63 - '@atproto-labs/simple-store@0.3.0': 64 - resolution: {integrity: sha512-nOb6ONKBRJHRlukW1sVawUkBqReLlLx6hT35VS3imaNPwiXDxLnTK7lxw3Lrl9k5yugSBDQAkZAq3MPTEFSUBQ==} 96 + '@atcute/crypto@2.3.0': 97 + resolution: {integrity: sha512-w5pkJKCjbNMQu+F4JRHbR3ROQyhi1wbn+GSC6WDQamcYHkZmEZk1/eoI354bIQOOfkEM6aFLv718iskrkon4GQ==} 65 98 66 - '@atproto/common-web@0.4.11': 67 - resolution: {integrity: sha512-VHejNmSABU8/03VrQ3e36AmT5U3UIeio+qSUqCrO1oNgrJcWfGy1rpj0FVtUugWF8Un29+yzkukzWGZfXL70rQ==} 99 + '@atcute/identity-resolver@1.2.2': 100 + resolution: {integrity: sha512-eUh/UH4bFvuXS0X7epYCeJC/kj4rbBXfSRumLEH4smMVwNOgTo7cL/0Srty+P/qVPoZEyXdfEbS0PHJyzoXmHw==} 101 + peerDependencies: 102 + '@atcute/identity': ^1.0.0 68 103 69 - '@atproto/common@0.5.7': 70 - resolution: {integrity: sha512-SSdXo8s1PtyeJyZd/AOocwlMloNQn+6WMwF4DzYihn/dT3Dx+6+WSOx8/Q/xCK4bIG15OTTEyLV+RxpOHmmUnQ==} 71 - engines: {node: '>=18.7.0'} 104 + '@atcute/identity@1.1.3': 105 + resolution: {integrity: sha512-oIqPoI8TwWeQxvcLmFEZLdN2XdWcaLVtlm8pNk0E72As9HNzzD9pwKPrLr3rmTLRIoULPPFmq9iFNsTeCIU9ng==} 72 106 73 - '@atproto/crypto@0.4.5': 74 - resolution: {integrity: sha512-n40aKkMoCatP0u9Yvhrdk6fXyOHFDDbkdm4h4HCyWW+KlKl8iXfD5iV+ECq+w5BM+QH25aIpt3/j6EUNerhLxw==} 75 - engines: {node: '>=18.7.0'} 107 + '@atcute/lexicons@1.2.6': 108 + resolution: {integrity: sha512-s76UQd8D+XmHIzrjD9CJ9SOOeeLPHc+sMmcj7UFakAW/dDFXc579fcRdRfuUKvXBL5v1Gs2VgDdlh/IvvQZAwA==} 76 109 77 - '@atproto/did@0.2.4': 78 - resolution: {integrity: sha512-nxNiCgXeo7pfjojq9fpfZxCO0X0xUipNVKW+AHNZwQKiUDt6zYL0VXEfm8HBUwQOCmKvj2pRRSM1Cur+tUWk3g==} 110 + '@atcute/mst@0.1.1': 111 + resolution: {integrity: sha512-NZ/lZ68GOjmAgBSeGf6WHyKM5wo1Hhc7PNt9uwsViswGPMNEEKNj9cw+0YGziXee/Qbnvc+CKqbRSPwruhXFQg==} 79 112 80 - '@atproto/identity@0.4.10': 81 - resolution: {integrity: sha512-nQbzDLXOhM8p/wo0cTh5DfMSOSHzj6jizpodX37LJ4S1TZzumSxAjHEZa5Rev3JaoD5uSWMVE0MmKEGWkPPvfQ==} 82 - engines: {node: '>=18.7.0'} 113 + '@atcute/multibase@1.1.6': 114 + resolution: {integrity: sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==} 83 115 84 - '@atproto/lex-builder@0.0.10': 85 - resolution: {integrity: sha512-vQ7l9yWdqBxFclNllxWhR38/PNLaPHuLaKcb/qpt5Xh7fw1+dMQwYNG8TYUjdXd1DbAWhWzmG4iejbZcoWP05g==} 116 + '@atcute/repo@0.1.1': 117 + resolution: {integrity: sha512-P5aWjt3bvcquUkUmGPslF0naAfLGRHse5Qdz9/RJYrFuoH0iiEMyRnW6M+3ksOe20GPsMnbq71WbzzFkRFPBtg==} 86 118 87 - '@atproto/lex-cbor@0.0.7': 88 - resolution: {integrity: sha512-thpjx0anzMi4J+o8JuKtyVQNFE+XStFhmYR4qf6mPWFC16MGbvoWnzONwJPTTP2kl6MiFVlQMnsUX7k9XGvxQg==} 119 + '@atcute/uint8array@1.0.6': 120 + resolution: {integrity: sha512-ucfRBQc7BFT8n9eCyGOzDHEMKF/nZwhS2pPao4Xtab1ML3HdFYcX2DM1tadCzas85QTGxHe5urnUAAcNKGRi9A==} 89 121 90 - '@atproto/lex-client@0.0.8': 91 - resolution: {integrity: sha512-KnqpEzJl8WUQ8u7tTp38FXzYl5namHhB1Ez9rWGq1RqqLQE5dGDtWjSt5Eksx1Pcvi/TEGdZR6BoKakF6Z9P5Q==} 122 + '@atcute/util-fetch@1.0.5': 123 + resolution: {integrity: sha512-qjHj01BGxjSjIFdPiAjSARnodJIIyKxnCMMEcXMESo9TAyND6XZQqrie5fia+LlYWVXdpsTds8uFQwc9jdKTig==} 92 124 93 - '@atproto/lex-data@0.0.7': 94 - resolution: {integrity: sha512-W/Q5o9o7n2Sv3UywckChu01X5lwQUtaiiOkGJLnRsdkQTyC6813nPgY+p2sG7NwwM+82lu+FUV9fE/Ul3VqaJw==} 125 + '@atcute/util-text@0.0.1': 126 + resolution: {integrity: sha512-t1KZqvn0AYy+h2KcJyHnKF9aEqfRfMUmyY8j1ELtAEIgqN9CxINAjxnoRCJIFUlvWzb+oY3uElQL/Vyk3yss0g==} 95 127 96 - '@atproto/lex-document@0.0.9': 97 - resolution: {integrity: sha512-f6vcLvBS3tn/aJf3gv/c2a/FVIulpIZWrXQkNjb6jo2jg2DOJkKBel+6nm4ygaBDUQjSDngZGFMe1eq4e6JJmg==} 98 - 99 - '@atproto/lex-installer@0.0.10': 100 - resolution: {integrity: sha512-JpP+Jcf/gXlV+ClkBC972sJmdXsxi3W65PA3A8DQJCtC95kqm/PLoEwGW/YsQEuBcIlWjx3Dc8NVpgiAfp4qTQ==} 128 + '@atcute/varint@1.0.3': 129 + resolution: {integrity: sha512-fdvMPyBB+McDT+Ai5e9RwEbwYV4yjZ60S2Dn5PTjGqUyxvoCH1z42viuheDZRUDkmfQehXJTZ5az7dSozVNtog==} 101 130 102 - '@atproto/lex-json@0.0.7': 103 - resolution: {integrity: sha512-bjNPD5M/MhLfjNM7tcxuls80UgXpHqxdOxDXEUouAtZQV/nIDhGjmNUvKxOmOgnDsiZRnT2g5y3onrnjH3a44g==} 104 - 105 - '@atproto/lex-resolver@0.0.9': 106 - resolution: {integrity: sha512-vysKmRCQOdEmys1WUQWNYdwKCmckbFGsIAbyKKCk4oBNz6TkksZKd8ifsW+OIh0a+68lMZZIDiGxeXFgZSdFrA==} 107 - 108 - '@atproto/lex-schema@0.0.8': 109 - resolution: {integrity: sha512-Dfx+n0bFJsFofN7sDhftOXXrJ+YRN8q/JXlGFuS9p72ZdrwahNU5Yp1X7yga3vyeEftffxlw0gw8NXIpNbDQmg==} 110 - 111 - '@atproto/lex@0.0.10': 112 - resolution: {integrity: sha512-ajmMw4uks1BNO2nS4yMeox08dB7lTPXFTZhGY13OMWSBYetsU42iM0Cm0bw3DJ7gSrS6sRcHgTvSJAKNNpLNqg==} 113 - hasBin: true 114 - 115 - '@atproto/lexicon@0.6.0': 116 - resolution: {integrity: sha512-5veb8aD+J5M0qszLJ+73KSFsFrJBgAY/nM1TSAJvGY7fNc9ZAT+PSUlmIyrdye9YznAZ07yktalls/TwNV7cHQ==} 117 - 118 - '@atproto/repo@0.8.12': 119 - resolution: {integrity: sha512-QpVTVulgfz5PUiCTELlDBiRvnsnwrFWi+6CfY88VwXzrRHd9NE8GItK7sfxQ6U65vD/idH8ddCgFrlrsn1REPQ==} 120 - engines: {node: '>=18.7.0'} 121 - 122 - '@atproto/syntax@0.4.2': 123 - resolution: {integrity: sha512-X9XSRPinBy/0VQ677j8VXlBsYSsUXaiqxWVpGGxJYsAhugdQRb0jqaVKJFtm6RskeNkV6y9xclSUi9UYG/COrA==} 131 + '@badrap/valita@0.4.6': 132 + resolution: {integrity: sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg==} 133 + engines: {node: '>= 18'} 124 134 125 135 '@esbuild/aix-ppc64@0.27.2': 126 136 resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} ··· 278 288 cpu: [x64] 279 289 os: [win32] 280 290 281 - '@ipld/dag-cbor@7.0.3': 282 - resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 291 + '@eslint-community/eslint-utils@4.9.1': 292 + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} 293 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 294 + peerDependencies: 295 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 296 + 297 + '@eslint-community/regexpp@4.12.2': 298 + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} 299 + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 300 + 301 + '@eslint/compat@2.0.0': 302 + resolution: {integrity: sha512-T9AfE1G1uv4wwq94ozgTGio5EUQBqAVe1X9qsQtSNVEYW6j3hvtZVm8Smr4qL1qDPFg+lOB2cL5RxTRMzq4CTA==} 303 + engines: {node: ^20.19.0 || ^22.13.0 || >=24} 304 + peerDependencies: 305 + eslint: ^8.40 || 9 306 + peerDependenciesMeta: 307 + eslint: 308 + optional: true 309 + 310 + '@eslint/config-array@0.21.1': 311 + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} 312 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 313 + 314 + '@eslint/config-helpers@0.4.2': 315 + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} 316 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 317 + 318 + '@eslint/core@0.17.0': 319 + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} 320 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 321 + 322 + '@eslint/core@1.0.0': 323 + resolution: {integrity: sha512-PRfWP+8FOldvbApr6xL7mNCw4cJcSTq4GA7tYbgq15mRb0kWKO/wEB2jr+uwjFH3sZvEZneZyCUGTxsv4Sahyw==} 324 + engines: {node: ^20.19.0 || ^22.13.0 || >=24} 325 + 326 + '@eslint/eslintrc@3.3.3': 327 + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} 328 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 329 + 330 + '@eslint/js@9.39.2': 331 + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} 332 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 333 + 334 + '@eslint/object-schema@2.1.7': 335 + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} 336 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 337 + 338 + '@eslint/plugin-kit@0.4.1': 339 + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} 340 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 341 + 342 + '@humanfs/core@0.19.1': 343 + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 344 + engines: {node: '>=18.18.0'} 345 + 346 + '@humanfs/node@0.16.7': 347 + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} 348 + engines: {node: '>=18.18.0'} 283 349 284 - '@isaacs/balanced-match@4.0.1': 285 - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} 286 - engines: {node: 20 || >=22} 350 + '@humanwhocodes/module-importer@1.0.1': 351 + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 352 + engines: {node: '>=12.22'} 287 353 288 - '@isaacs/brace-expansion@5.0.0': 289 - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} 290 - engines: {node: 20 || >=22} 354 + '@humanwhocodes/retry@0.4.3': 355 + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 356 + engines: {node: '>=18.18'} 291 357 292 358 '@jridgewell/gen-mapping@0.3.13': 293 359 resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} ··· 305 371 '@jridgewell/trace-mapping@0.3.31': 306 372 resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 307 373 308 - '@noble/curves@1.9.7': 309 - resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} 310 - engines: {node: ^14.21.3 || >=16} 311 - 312 - '@noble/hashes@1.8.0': 313 - resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} 314 - engines: {node: ^14.21.3 || >=16} 374 + '@noble/secp256k1@3.0.0': 375 + resolution: {integrity: sha512-NJBaR352KyIvj3t6sgT/+7xrNyF9Xk9QlLSIqUGVUYlsnDTAUqY8LOmwpcgEx4AMJXRITQ5XEVHD+mMaPfr3mg==} 315 376 316 377 '@rollup/rollup-android-arm-eabi@4.55.1': 317 378 resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} ··· 438 499 cpu: [x64] 439 500 os: [win32] 440 501 502 + '@standard-schema/spec@1.1.0': 503 + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} 504 + 441 505 '@sveltejs/acorn-typescript@1.0.8': 442 506 resolution: {integrity: sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==} 443 507 peerDependencies: ··· 458 522 svelte: ^5.0.0 459 523 vite: ^6.3.0 || ^7.0.0 460 524 461 - '@ts-morph/common@0.28.1': 462 - resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} 525 + '@tailwindcss/node@4.1.18': 526 + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} 527 + 528 + '@tailwindcss/oxide-android-arm64@4.1.18': 529 + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} 530 + engines: {node: '>= 10'} 531 + cpu: [arm64] 532 + os: [android] 533 + 534 + '@tailwindcss/oxide-darwin-arm64@4.1.18': 535 + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} 536 + engines: {node: '>= 10'} 537 + cpu: [arm64] 538 + os: [darwin] 539 + 540 + '@tailwindcss/oxide-darwin-x64@4.1.18': 541 + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} 542 + engines: {node: '>= 10'} 543 + cpu: [x64] 544 + os: [darwin] 545 + 546 + '@tailwindcss/oxide-freebsd-x64@4.1.18': 547 + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} 548 + engines: {node: '>= 10'} 549 + cpu: [x64] 550 + os: [freebsd] 551 + 552 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 553 + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} 554 + engines: {node: '>= 10'} 555 + cpu: [arm] 556 + os: [linux] 557 + 558 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 559 + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} 560 + engines: {node: '>= 10'} 561 + cpu: [arm64] 562 + os: [linux] 563 + 564 + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 565 + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} 566 + engines: {node: '>= 10'} 567 + cpu: [arm64] 568 + os: [linux] 569 + 570 + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 571 + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} 572 + engines: {node: '>= 10'} 573 + cpu: [x64] 574 + os: [linux] 575 + 576 + '@tailwindcss/oxide-linux-x64-musl@4.1.18': 577 + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} 578 + engines: {node: '>= 10'} 579 + cpu: [x64] 580 + os: [linux] 581 + 582 + '@tailwindcss/oxide-wasm32-wasi@4.1.18': 583 + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} 584 + engines: {node: '>=14.0.0'} 585 + cpu: [wasm32] 586 + bundledDependencies: 587 + - '@napi-rs/wasm-runtime' 588 + - '@emnapi/core' 589 + - '@emnapi/runtime' 590 + - '@tybys/wasm-util' 591 + - '@emnapi/wasi-threads' 592 + - tslib 593 + 594 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 595 + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} 596 + engines: {node: '>= 10'} 597 + cpu: [arm64] 598 + os: [win32] 599 + 600 + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 601 + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} 602 + engines: {node: '>= 10'} 603 + cpu: [x64] 604 + os: [win32] 605 + 606 + '@tailwindcss/oxide@4.1.18': 607 + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} 608 + engines: {node: '>= 10'} 609 + 610 + '@tailwindcss/vite@4.1.18': 611 + resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} 612 + peerDependencies: 613 + vite: ^5.2.0 || ^6 || ^7 463 614 464 615 '@tsconfig/svelte@5.0.6': 465 616 resolution: {integrity: sha512-yGxYL0I9eETH1/DR9qVJey4DAsCdeau4a9wYPKuXfEhm8lFO8wg+LLYJjIpAm6Fw7HSlhepPhYPDop75485yWQ==} 466 617 467 618 '@types/estree@1.0.8': 468 619 resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 620 + 621 + '@types/json-schema@7.0.15': 622 + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 469 623 470 624 '@types/node@24.10.4': 471 625 resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} 472 626 473 - abort-controller@3.0.0: 474 - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 475 - engines: {node: '>=6.5'} 627 + '@typescript-eslint/eslint-plugin@8.52.0': 628 + resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} 629 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 630 + peerDependencies: 631 + '@typescript-eslint/parser': ^8.52.0 632 + eslint: ^8.57.0 || ^9.0.0 633 + typescript: '>=4.8.4 <6.0.0' 634 + 635 + '@typescript-eslint/parser@8.52.0': 636 + resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} 637 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 638 + peerDependencies: 639 + eslint: ^8.57.0 || ^9.0.0 640 + typescript: '>=4.8.4 <6.0.0' 641 + 642 + '@typescript-eslint/project-service@8.52.0': 643 + resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} 644 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 645 + peerDependencies: 646 + typescript: '>=4.8.4 <6.0.0' 647 + 648 + '@typescript-eslint/scope-manager@8.52.0': 649 + resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} 650 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 651 + 652 + '@typescript-eslint/tsconfig-utils@8.52.0': 653 + resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} 654 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 655 + peerDependencies: 656 + typescript: '>=4.8.4 <6.0.0' 657 + 658 + '@typescript-eslint/type-utils@8.52.0': 659 + resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} 660 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 661 + peerDependencies: 662 + eslint: ^8.57.0 || ^9.0.0 663 + typescript: '>=4.8.4 <6.0.0' 664 + 665 + '@typescript-eslint/types@8.52.0': 666 + resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} 667 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 668 + 669 + '@typescript-eslint/typescript-estree@8.52.0': 670 + resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} 671 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 672 + peerDependencies: 673 + typescript: '>=4.8.4 <6.0.0' 674 + 675 + '@typescript-eslint/utils@8.52.0': 676 + resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} 677 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 678 + peerDependencies: 679 + eslint: ^8.57.0 || ^9.0.0 680 + typescript: '>=4.8.4 <6.0.0' 681 + 682 + '@typescript-eslint/visitor-keys@8.52.0': 683 + resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} 684 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 685 + 686 + acorn-jsx@5.3.2: 687 + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 688 + peerDependencies: 689 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 476 690 477 691 acorn@8.15.0: 478 692 resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 479 693 engines: {node: '>=0.4.0'} 480 694 hasBin: true 481 695 482 - ansi-regex@5.0.1: 483 - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 484 - engines: {node: '>=8'} 696 + ajv@6.12.6: 697 + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 485 698 486 699 ansi-styles@4.3.0: 487 700 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 488 701 engines: {node: '>=8'} 489 702 703 + argparse@2.0.1: 704 + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 705 + 490 706 aria-query@5.3.2: 491 707 resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 492 708 engines: {node: '>= 0.4'} 493 709 494 - atomic-sleep@1.0.0: 495 - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 496 - engines: {node: '>=8.0.0'} 497 - 498 710 axobject-query@4.1.0: 499 711 resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 500 712 engines: {node: '>= 0.4'} 501 713 502 - base64-js@1.5.1: 503 - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 714 + balanced-match@1.0.2: 715 + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 716 + 717 + brace-expansion@1.1.12: 718 + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 719 + 720 + brace-expansion@2.0.2: 721 + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 504 722 505 - buffer@6.0.3: 506 - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 723 + callsites@3.1.0: 724 + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 725 + engines: {node: '>=6'} 507 726 508 - cborg@1.10.2: 509 - resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==} 510 - hasBin: true 727 + chalk@4.1.2: 728 + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 729 + engines: {node: '>=10'} 511 730 512 731 chokidar@4.0.3: 513 732 resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 514 733 engines: {node: '>= 14.16.0'} 515 734 516 - cliui@8.0.1: 517 - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 518 - engines: {node: '>=12'} 519 - 520 735 clsx@2.1.1: 521 736 resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 522 737 engines: {node: '>=6'} 523 738 524 - code-block-writer@13.0.3: 525 - resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} 526 - 527 739 color-convert@2.0.1: 528 740 resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 529 741 engines: {node: '>=7.0.0'} ··· 531 743 color-name@1.1.4: 532 744 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 533 745 534 - core-js@3.47.0: 535 - resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} 746 + concat-map@0.0.1: 747 + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 748 + 749 + cross-spawn@7.0.6: 750 + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 751 + engines: {node: '>= 8'} 752 + 753 + cssesc@3.0.0: 754 + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 755 + engines: {node: '>=4'} 756 + hasBin: true 757 + 758 + daisyui@5.5.14: 759 + resolution: {integrity: sha512-L47rvw7I7hK68TA97VB8Ee0woHew+/ohR6Lx6Ah/krfISOqcG4My7poNpX5Mo5/ytMxiR40fEaz6njzDi7cuSg==} 760 + 761 + debug@4.4.3: 762 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 763 + engines: {node: '>=6.0'} 764 + peerDependencies: 765 + supports-color: '*' 766 + peerDependenciesMeta: 767 + supports-color: 768 + optional: true 769 + 770 + deep-is@0.1.4: 771 + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 536 772 537 773 deepmerge@4.3.1: 538 774 resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 539 775 engines: {node: '>=0.10.0'} 776 + 777 + detect-libc@2.1.2: 778 + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 779 + engines: {node: '>=8'} 540 780 541 781 devalue@5.6.1: 542 782 resolution: {integrity: sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==} 543 783 544 - emoji-regex@8.0.0: 545 - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 784 + enhanced-resolve@5.18.4: 785 + resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} 786 + engines: {node: '>=10.13.0'} 546 787 547 788 esbuild@0.27.2: 548 789 resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} 549 790 engines: {node: '>=18'} 550 791 hasBin: true 551 792 552 - escalade@3.2.0: 553 - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 554 - engines: {node: '>=6'} 793 + escape-string-regexp@4.0.0: 794 + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 795 + engines: {node: '>=10'} 796 + 797 + eslint-plugin-svelte@3.14.0: 798 + resolution: {integrity: sha512-Isw0GvaMm0yHxAj71edAdGFh28ufYs+6rk2KlbbZphnqZAzrH3Se3t12IFh2H9+1F/jlDhBBL4oiOJmLqmYX0g==} 799 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 800 + peerDependencies: 801 + eslint: ^8.57.1 || ^9.0.0 802 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 803 + peerDependenciesMeta: 804 + svelte: 805 + optional: true 806 + 807 + eslint-scope@8.4.0: 808 + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 809 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 810 + 811 + eslint-visitor-keys@3.4.3: 812 + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 813 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 814 + 815 + eslint-visitor-keys@4.2.1: 816 + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 817 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 818 + 819 + eslint@9.39.2: 820 + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} 821 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 822 + hasBin: true 823 + peerDependencies: 824 + jiti: '*' 825 + peerDependenciesMeta: 826 + jiti: 827 + optional: true 555 828 556 829 esm-env@1.2.2: 557 830 resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} 831 + 832 + espree@10.4.0: 833 + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 834 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 835 + 836 + esquery@1.7.0: 837 + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} 838 + engines: {node: '>=0.10'} 558 839 559 840 esrap@2.2.1: 560 841 resolution: {integrity: sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==} 561 842 562 - event-target-shim@5.0.1: 563 - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 564 - engines: {node: '>=6'} 843 + esrecurse@4.3.0: 844 + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 845 + engines: {node: '>=4.0'} 846 + 847 + estraverse@5.3.0: 848 + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 849 + engines: {node: '>=4.0'} 850 + 851 + esutils@2.0.3: 852 + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 853 + engines: {node: '>=0.10.0'} 854 + 855 + fast-deep-equal@3.1.3: 856 + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 565 857 566 - events@3.3.0: 567 - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 568 - engines: {node: '>=0.8.x'} 858 + fast-json-stable-stringify@2.1.0: 859 + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 569 860 570 - fast-redact@3.5.0: 571 - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 572 - engines: {node: '>=6'} 861 + fast-levenshtein@2.0.6: 862 + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 573 863 574 864 fdir@6.5.0: 575 865 resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} ··· 580 870 picomatch: 581 871 optional: true 582 872 873 + file-entry-cache@8.0.0: 874 + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 875 + engines: {node: '>=16.0.0'} 876 + 877 + find-up@5.0.0: 878 + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 879 + engines: {node: '>=10'} 880 + 881 + flat-cache@4.0.1: 882 + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 883 + engines: {node: '>=16'} 884 + 885 + flatted@3.3.3: 886 + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 887 + 583 888 fsevents@2.3.3: 584 889 resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 585 890 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 586 891 os: [darwin] 587 892 588 - get-caller-file@2.0.5: 589 - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 590 - engines: {node: 6.* || 8.* || >= 10.*} 893 + glob-parent@6.0.2: 894 + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 895 + engines: {node: '>=10.13.0'} 896 + 897 + globals@14.0.0: 898 + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 899 + engines: {node: '>=18'} 900 + 901 + globals@16.5.0: 902 + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} 903 + engines: {node: '>=18'} 904 + 905 + globals@17.0.0: 906 + resolution: {integrity: sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==} 907 + engines: {node: '>=18'} 591 908 592 - ieee754@1.2.1: 593 - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 909 + graceful-fs@4.2.11: 910 + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 594 911 595 - is-fullwidth-code-point@3.0.0: 596 - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 912 + has-flag@4.0.0: 913 + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 597 914 engines: {node: '>=8'} 598 915 916 + ignore@5.3.2: 917 + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 918 + engines: {node: '>= 4'} 919 + 920 + ignore@7.0.5: 921 + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 922 + engines: {node: '>= 4'} 923 + 924 + import-fresh@3.3.1: 925 + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 926 + engines: {node: '>=6'} 927 + 928 + imurmurhash@0.1.4: 929 + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 930 + engines: {node: '>=0.8.19'} 931 + 932 + is-extglob@2.1.1: 933 + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 934 + engines: {node: '>=0.10.0'} 935 + 936 + is-glob@4.0.3: 937 + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 938 + engines: {node: '>=0.10.0'} 939 + 599 940 is-reference@3.0.3: 600 941 resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 601 942 602 - iso-datestring-validator@2.2.2: 603 - resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 943 + isexe@2.0.0: 944 + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 945 + 946 + jiti@2.6.1: 947 + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 948 + hasBin: true 949 + 950 + js-yaml@4.1.1: 951 + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 952 + hasBin: true 953 + 954 + json-buffer@3.0.1: 955 + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 956 + 957 + json-schema-traverse@0.4.1: 958 + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 959 + 960 + json-stable-stringify-without-jsonify@1.0.1: 961 + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 962 + 963 + keyv@4.5.4: 964 + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 965 + 966 + known-css-properties@0.37.0: 967 + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} 968 + 969 + levn@0.4.1: 970 + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 971 + engines: {node: '>= 0.8.0'} 972 + 973 + lightningcss-android-arm64@1.30.2: 974 + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} 975 + engines: {node: '>= 12.0.0'} 976 + cpu: [arm64] 977 + os: [android] 978 + 979 + lightningcss-darwin-arm64@1.30.2: 980 + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} 981 + engines: {node: '>= 12.0.0'} 982 + cpu: [arm64] 983 + os: [darwin] 984 + 985 + lightningcss-darwin-x64@1.30.2: 986 + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} 987 + engines: {node: '>= 12.0.0'} 988 + cpu: [x64] 989 + os: [darwin] 990 + 991 + lightningcss-freebsd-x64@1.30.2: 992 + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} 993 + engines: {node: '>= 12.0.0'} 994 + cpu: [x64] 995 + os: [freebsd] 996 + 997 + lightningcss-linux-arm-gnueabihf@1.30.2: 998 + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} 999 + engines: {node: '>= 12.0.0'} 1000 + cpu: [arm] 1001 + os: [linux] 1002 + 1003 + lightningcss-linux-arm64-gnu@1.30.2: 1004 + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} 1005 + engines: {node: '>= 12.0.0'} 1006 + cpu: [arm64] 1007 + os: [linux] 1008 + 1009 + lightningcss-linux-arm64-musl@1.30.2: 1010 + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} 1011 + engines: {node: '>= 12.0.0'} 1012 + cpu: [arm64] 1013 + os: [linux] 1014 + 1015 + lightningcss-linux-x64-gnu@1.30.2: 1016 + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} 1017 + engines: {node: '>= 12.0.0'} 1018 + cpu: [x64] 1019 + os: [linux] 1020 + 1021 + lightningcss-linux-x64-musl@1.30.2: 1022 + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} 1023 + engines: {node: '>= 12.0.0'} 1024 + cpu: [x64] 1025 + os: [linux] 1026 + 1027 + lightningcss-win32-arm64-msvc@1.30.2: 1028 + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} 1029 + engines: {node: '>= 12.0.0'} 1030 + cpu: [arm64] 1031 + os: [win32] 1032 + 1033 + lightningcss-win32-x64-msvc@1.30.2: 1034 + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} 1035 + engines: {node: '>= 12.0.0'} 1036 + cpu: [x64] 1037 + os: [win32] 1038 + 1039 + lightningcss@1.30.2: 1040 + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} 1041 + engines: {node: '>= 12.0.0'} 1042 + 1043 + lilconfig@2.1.0: 1044 + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1045 + engines: {node: '>=10'} 604 1046 605 1047 locate-character@3.0.0: 606 1048 resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 607 1049 608 - lru-cache@10.4.3: 609 - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1050 + locate-path@6.0.0: 1051 + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1052 + engines: {node: '>=10'} 1053 + 1054 + lodash.merge@4.6.2: 1055 + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 610 1056 611 1057 magic-string@0.30.21: 612 1058 resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 613 1059 614 - minimatch@10.1.1: 615 - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} 616 - engines: {node: 20 || >=22} 1060 + minimatch@3.1.2: 1061 + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1062 + 1063 + minimatch@9.0.5: 1064 + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1065 + engines: {node: '>=16 || 14 >=14.17'} 617 1066 618 1067 mri@1.2.0: 619 1068 resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 620 1069 engines: {node: '>=4'} 621 1070 622 - multiformats@9.9.0: 623 - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} 1071 + ms@2.1.3: 1072 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 624 1073 625 1074 nanoid@3.3.11: 626 1075 resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 627 1076 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 628 1077 hasBin: true 629 1078 1079 + natural-compare@1.4.0: 1080 + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1081 + 630 1082 obug@2.1.1: 631 1083 resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} 632 1084 633 - on-exit-leak-free@2.1.2: 634 - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 635 - engines: {node: '>=14.0.0'} 1085 + optionator@0.9.4: 1086 + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1087 + engines: {node: '>= 0.8.0'} 636 1088 637 - path-browserify@1.0.1: 638 - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 1089 + p-limit@3.1.0: 1090 + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1091 + engines: {node: '>=10'} 1092 + 1093 + p-locate@5.0.0: 1094 + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1095 + engines: {node: '>=10'} 1096 + 1097 + parent-module@1.0.1: 1098 + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1099 + engines: {node: '>=6'} 1100 + 1101 + path-exists@4.0.0: 1102 + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1103 + engines: {node: '>=8'} 1104 + 1105 + path-key@3.1.1: 1106 + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1107 + engines: {node: '>=8'} 639 1108 640 1109 picocolors@1.1.1: 641 1110 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} ··· 644 1113 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 645 1114 engines: {node: '>=12'} 646 1115 647 - pino-abstract-transport@1.2.0: 648 - resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} 1116 + postcss-load-config@3.1.4: 1117 + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1118 + engines: {node: '>= 10'} 1119 + peerDependencies: 1120 + postcss: '>=8.0.9' 1121 + ts-node: '>=9.0.0' 1122 + peerDependenciesMeta: 1123 + postcss: 1124 + optional: true 1125 + ts-node: 1126 + optional: true 649 1127 650 - pino-std-serializers@6.2.2: 651 - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 1128 + postcss-safe-parser@7.0.1: 1129 + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} 1130 + engines: {node: '>=18.0'} 1131 + peerDependencies: 1132 + postcss: ^8.4.31 1133 + 1134 + postcss-scss@4.0.9: 1135 + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 1136 + engines: {node: '>=12.0'} 1137 + peerDependencies: 1138 + postcss: ^8.4.29 652 1139 653 - pino@8.21.0: 654 - resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} 655 - hasBin: true 1140 + postcss-selector-parser@7.1.1: 1141 + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} 1142 + engines: {node: '>=4'} 656 1143 657 1144 postcss@8.5.6: 658 1145 resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 659 1146 engines: {node: ^10 || ^12 || >=14} 660 1147 661 - prettier@3.7.4: 662 - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} 663 - engines: {node: '>=14'} 664 - hasBin: true 665 - 666 - process-warning@3.0.0: 667 - resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} 668 - 669 - process@0.11.10: 670 - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 671 - engines: {node: '>= 0.6.0'} 1148 + prelude-ls@1.2.1: 1149 + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1150 + engines: {node: '>= 0.8.0'} 672 1151 673 - quick-format-unescaped@4.0.4: 674 - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 675 - 676 - readable-stream@4.7.0: 677 - resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} 678 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1152 + punycode@2.3.1: 1153 + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1154 + engines: {node: '>=6'} 679 1155 680 1156 readdirp@4.1.2: 681 1157 resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 682 1158 engines: {node: '>= 14.18.0'} 683 1159 684 - real-require@0.2.0: 685 - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 686 - engines: {node: '>= 12.13.0'} 687 - 688 - require-directory@2.1.1: 689 - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 690 - engines: {node: '>=0.10.0'} 1160 + resolve-from@4.0.0: 1161 + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1162 + engines: {node: '>=4'} 691 1163 692 1164 rollup@4.55.1: 693 1165 resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} ··· 698 1170 resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 699 1171 engines: {node: '>=6'} 700 1172 701 - safe-buffer@5.2.1: 702 - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 703 - 704 - safe-stable-stringify@2.5.0: 705 - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 1173 + semver@7.7.3: 1174 + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 706 1175 engines: {node: '>=10'} 1176 + hasBin: true 707 1177 708 - sonic-boom@3.8.1: 709 - resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} 1178 + shebang-command@2.0.0: 1179 + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1180 + engines: {node: '>=8'} 1181 + 1182 + shebang-regex@3.0.0: 1183 + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1184 + engines: {node: '>=8'} 710 1185 711 1186 source-map-js@1.2.1: 712 1187 resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 713 1188 engines: {node: '>=0.10.0'} 714 1189 715 - split2@4.2.0: 716 - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 717 - engines: {node: '>= 10.x'} 718 - 719 - string-width@4.2.3: 720 - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1190 + strip-json-comments@3.1.1: 1191 + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 721 1192 engines: {node: '>=8'} 722 1193 723 - string_decoder@1.3.0: 724 - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 725 - 726 - strip-ansi@6.0.1: 727 - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1194 + supports-color@7.2.0: 1195 + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 728 1196 engines: {node: '>=8'} 729 1197 730 1198 svelte-check@4.3.5: ··· 735 1203 svelte: ^4.0.0 || ^5.0.0-next.0 736 1204 typescript: '>=5.0.0' 737 1205 1206 + svelte-eslint-parser@1.4.1: 1207 + resolution: {integrity: sha512-1eqkfQ93goAhjAXxZiu1SaKI9+0/sxp4JIWQwUpsz7ybehRE5L8dNuz7Iry7K22R47p5/+s9EM+38nHV2OlgXA==} 1208 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0, pnpm: 10.24.0} 1209 + peerDependencies: 1210 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 1211 + peerDependenciesMeta: 1212 + svelte: 1213 + optional: true 1214 + 738 1215 svelte@5.46.1: 739 1216 resolution: {integrity: sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==} 740 1217 engines: {node: '>=18'} 741 1218 742 - thread-stream@2.7.0: 743 - resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} 1219 + tailwindcss@4.1.18: 1220 + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} 1221 + 1222 + tapable@2.3.0: 1223 + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} 1224 + engines: {node: '>=6'} 744 1225 745 1226 tinyglobby@0.2.15: 746 1227 resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 747 1228 engines: {node: '>=12.0.0'} 748 1229 749 - ts-morph@27.0.2: 750 - resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==} 1230 + ts-api-utils@2.4.0: 1231 + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} 1232 + engines: {node: '>=18.12'} 1233 + peerDependencies: 1234 + typescript: '>=4.8.4' 751 1235 752 - tslib@2.8.1: 753 - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1236 + type-check@0.4.0: 1237 + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1238 + engines: {node: '>= 0.8.0'} 1239 + 1240 + typescript-eslint@8.52.0: 1241 + resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} 1242 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1243 + peerDependencies: 1244 + eslint: ^8.57.0 || ^9.0.0 1245 + typescript: '>=4.8.4 <6.0.0' 754 1246 755 1247 typescript@5.9.3: 756 1248 resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 757 1249 engines: {node: '>=14.17'} 758 1250 hasBin: true 759 - 760 - uint8arrays@3.0.0: 761 - resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 762 1251 763 1252 undici-types@7.16.0: 764 1253 resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} ··· 766 1255 unicode-segmenter@0.14.5: 767 1256 resolution: {integrity: sha512-jHGmj2LUuqDcX3hqY12Ql+uhUTn8huuxNZGq7GvtF6bSybzH3aFgedYu/KTzQStEgt1Ra2F3HxadNXsNjb3m3g==} 768 1257 769 - varint@6.0.0: 770 - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} 1258 + uri-js@4.4.1: 1259 + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1260 + 1261 + util-deprecate@1.0.2: 1262 + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 771 1263 772 1264 vite@7.3.1: 773 1265 resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} ··· 817 1309 vite: 818 1310 optional: true 819 1311 820 - wrap-ansi@7.0.0: 821 - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 822 - engines: {node: '>=10'} 1312 + which@2.0.2: 1313 + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1314 + engines: {node: '>= 8'} 1315 + hasBin: true 823 1316 824 - y18n@5.0.8: 825 - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 826 - engines: {node: '>=10'} 1317 + word-wrap@1.2.5: 1318 + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1319 + engines: {node: '>=0.10.0'} 827 1320 828 - yargs-parser@21.1.1: 829 - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 830 - engines: {node: '>=12'} 1321 + yaml@1.10.2: 1322 + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1323 + engines: {node: '>= 6'} 831 1324 832 - yargs@17.7.2: 833 - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 834 - engines: {node: '>=12'} 1325 + yocto-queue@0.1.0: 1326 + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1327 + engines: {node: '>=10'} 835 1328 836 1329 zimmerframe@1.1.4: 837 1330 resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} 838 1331 839 - zod@3.25.76: 840 - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} 841 - 842 1332 snapshots: 843 1333 844 - '@atproto-labs/did-resolver@0.2.5': 1334 + '@atcute/atproto@3.1.10': 845 1335 dependencies: 846 - '@atproto-labs/fetch': 0.2.3 847 - '@atproto-labs/pipe': 0.1.1 848 - '@atproto-labs/simple-store': 0.3.0 849 - '@atproto-labs/simple-store-memory': 0.1.4 850 - '@atproto/did': 0.2.4 851 - zod: 3.25.76 1336 + '@atcute/lexicons': 1.2.6 852 1337 853 - '@atproto-labs/fetch@0.2.3': 1338 + '@atcute/car@5.0.0': 854 1339 dependencies: 855 - '@atproto-labs/pipe': 0.1.1 1340 + '@atcute/cbor': 2.2.8 1341 + '@atcute/cid': 2.3.0 1342 + '@atcute/uint8array': 1.0.6 1343 + '@atcute/varint': 1.0.3 856 1344 857 - '@atproto-labs/handle-resolver@0.3.5': 1345 + '@atcute/cbor@2.2.8': 858 1346 dependencies: 859 - '@atproto-labs/simple-store': 0.3.0 860 - '@atproto-labs/simple-store-memory': 0.1.4 861 - '@atproto/did': 0.2.4 862 - zod: 3.25.76 1347 + '@atcute/cid': 2.3.0 1348 + '@atcute/multibase': 1.1.6 1349 + '@atcute/uint8array': 1.0.6 863 1350 864 - '@atproto-labs/pipe@0.1.1': {} 865 - 866 - '@atproto-labs/simple-store-memory@0.1.4': 1351 + '@atcute/cid@2.3.0': 867 1352 dependencies: 868 - '@atproto-labs/simple-store': 0.3.0 869 - lru-cache: 10.4.3 1353 + '@atcute/multibase': 1.1.6 1354 + '@atcute/uint8array': 1.0.6 870 1355 871 - '@atproto-labs/simple-store@0.3.0': {} 872 - 873 - '@atproto/common-web@0.4.11': 1356 + '@atcute/client@4.2.1': 874 1357 dependencies: 875 - '@atproto/lex-data': 0.0.7 876 - '@atproto/lex-json': 0.0.7 877 - zod: 3.25.76 1358 + '@atcute/identity': 1.1.3 1359 + '@atcute/lexicons': 1.2.6 878 1360 879 - '@atproto/common@0.5.7': 1361 + '@atcute/crypto@2.3.0': 880 1362 dependencies: 881 - '@atproto/common-web': 0.4.11 882 - '@atproto/lex-cbor': 0.0.7 883 - '@atproto/lex-data': 0.0.7 884 - iso-datestring-validator: 2.2.2 885 - multiformats: 9.9.0 886 - pino: 8.21.0 1363 + '@atcute/multibase': 1.1.6 1364 + '@atcute/uint8array': 1.0.6 1365 + '@noble/secp256k1': 3.0.0 887 1366 888 - '@atproto/crypto@0.4.5': 1367 + '@atcute/identity-resolver@1.2.2(@atcute/identity@1.1.3)': 889 1368 dependencies: 890 - '@noble/curves': 1.9.7 891 - '@noble/hashes': 1.8.0 892 - uint8arrays: 3.0.0 1369 + '@atcute/identity': 1.1.3 1370 + '@atcute/lexicons': 1.2.6 1371 + '@atcute/util-fetch': 1.0.5 1372 + '@badrap/valita': 0.4.6 893 1373 894 - '@atproto/did@0.2.4': 1374 + '@atcute/identity@1.1.3': 895 1375 dependencies: 896 - zod: 3.25.76 1376 + '@atcute/lexicons': 1.2.6 1377 + '@badrap/valita': 0.4.6 897 1378 898 - '@atproto/identity@0.4.10': 1379 + '@atcute/lexicons@1.2.6': 899 1380 dependencies: 900 - '@atproto/common-web': 0.4.11 901 - '@atproto/crypto': 0.4.5 1381 + '@atcute/uint8array': 1.0.6 1382 + '@atcute/util-text': 0.0.1 1383 + '@standard-schema/spec': 1.1.0 1384 + esm-env: 1.2.2 902 1385 903 - '@atproto/lex-builder@0.0.10': 1386 + '@atcute/mst@0.1.1': 904 1387 dependencies: 905 - '@atproto/lex-document': 0.0.9 906 - '@atproto/lex-schema': 0.0.8 907 - prettier: 3.7.4 908 - ts-morph: 27.0.2 909 - tslib: 2.8.1 1388 + '@atcute/cbor': 2.2.8 1389 + '@atcute/cid': 2.3.0 1390 + '@atcute/uint8array': 1.0.6 910 1391 911 - '@atproto/lex-cbor@0.0.7': 1392 + '@atcute/multibase@1.1.6': 912 1393 dependencies: 913 - '@atproto/lex-data': 0.0.7 914 - tslib: 2.8.1 1394 + '@atcute/uint8array': 1.0.6 915 1395 916 - '@atproto/lex-client@0.0.8': 1396 + '@atcute/repo@0.1.1': 917 1397 dependencies: 918 - '@atproto/lex-data': 0.0.7 919 - '@atproto/lex-json': 0.0.7 920 - '@atproto/lex-schema': 0.0.8 921 - tslib: 2.8.1 1398 + '@atcute/car': 5.0.0 1399 + '@atcute/cbor': 2.2.8 1400 + '@atcute/cid': 2.3.0 1401 + '@atcute/crypto': 2.3.0 1402 + '@atcute/lexicons': 1.2.6 1403 + '@atcute/mst': 0.1.1 1404 + '@atcute/uint8array': 1.0.6 922 1405 923 - '@atproto/lex-data@0.0.7': 924 - dependencies: 925 - '@atproto/syntax': 0.4.2 926 - multiformats: 9.9.0 927 - tslib: 2.8.1 928 - uint8arrays: 3.0.0 929 - unicode-segmenter: 0.14.5 930 - 931 - '@atproto/lex-document@0.0.9': 932 - dependencies: 933 - '@atproto/lex-schema': 0.0.8 934 - core-js: 3.47.0 935 - tslib: 2.8.1 936 - 937 - '@atproto/lex-installer@0.0.10': 938 - dependencies: 939 - '@atproto/lex-builder': 0.0.10 940 - '@atproto/lex-cbor': 0.0.7 941 - '@atproto/lex-data': 0.0.7 942 - '@atproto/lex-document': 0.0.9 943 - '@atproto/lex-resolver': 0.0.9 944 - '@atproto/lex-schema': 0.0.8 945 - '@atproto/syntax': 0.4.2 946 - tslib: 2.8.1 947 - 948 - '@atproto/lex-json@0.0.7': 949 - dependencies: 950 - '@atproto/lex-data': 0.0.7 951 - tslib: 2.8.1 1406 + '@atcute/uint8array@1.0.6': {} 952 1407 953 - '@atproto/lex-resolver@0.0.9': 1408 + '@atcute/util-fetch@1.0.5': 954 1409 dependencies: 955 - '@atproto-labs/did-resolver': 0.2.5 956 - '@atproto/crypto': 0.4.5 957 - '@atproto/lex-client': 0.0.8 958 - '@atproto/lex-data': 0.0.7 959 - '@atproto/lex-document': 0.0.9 960 - '@atproto/lex-schema': 0.0.8 961 - '@atproto/repo': 0.8.12 962 - '@atproto/syntax': 0.4.2 963 - tslib: 2.8.1 964 - 965 - '@atproto/lex-schema@0.0.8': 966 - dependencies: 967 - '@atproto/lex-data': 0.0.7 968 - '@atproto/syntax': 0.4.2 969 - tslib: 2.8.1 970 - 971 - '@atproto/lex@0.0.10': 972 - dependencies: 973 - '@atproto/lex-builder': 0.0.10 974 - '@atproto/lex-client': 0.0.8 975 - '@atproto/lex-data': 0.0.7 976 - '@atproto/lex-installer': 0.0.10 977 - '@atproto/lex-json': 0.0.7 978 - '@atproto/lex-schema': 0.0.8 979 - tslib: 2.8.1 980 - yargs: 17.7.2 1410 + '@badrap/valita': 0.4.6 981 1411 982 - '@atproto/lexicon@0.6.0': 1412 + '@atcute/util-text@0.0.1': 983 1413 dependencies: 984 - '@atproto/common-web': 0.4.11 985 - '@atproto/syntax': 0.4.2 986 - iso-datestring-validator: 2.2.2 987 - multiformats: 9.9.0 988 - zod: 3.25.76 1414 + unicode-segmenter: 0.14.5 989 1415 990 - '@atproto/repo@0.8.12': 991 - dependencies: 992 - '@atproto/common': 0.5.7 993 - '@atproto/common-web': 0.4.11 994 - '@atproto/crypto': 0.4.5 995 - '@atproto/lexicon': 0.6.0 996 - '@ipld/dag-cbor': 7.0.3 997 - multiformats: 9.9.0 998 - uint8arrays: 3.0.0 999 - varint: 6.0.0 1000 - zod: 3.25.76 1416 + '@atcute/varint@1.0.3': {} 1001 1417 1002 - '@atproto/syntax@0.4.2': {} 1418 + '@badrap/valita@0.4.6': {} 1003 1419 1004 1420 '@esbuild/aix-ppc64@0.27.2': 1005 1421 optional: true ··· 1079 1495 '@esbuild/win32-x64@0.27.2': 1080 1496 optional: true 1081 1497 1082 - '@ipld/dag-cbor@7.0.3': 1498 + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': 1083 1499 dependencies: 1084 - cborg: 1.10.2 1085 - multiformats: 9.9.0 1500 + eslint: 9.39.2(jiti@2.6.1) 1501 + eslint-visitor-keys: 3.4.3 1086 1502 1087 - '@isaacs/balanced-match@4.0.1': {} 1503 + '@eslint-community/regexpp@4.12.2': {} 1088 1504 1089 - '@isaacs/brace-expansion@5.0.0': 1505 + '@eslint/compat@2.0.0(eslint@9.39.2(jiti@2.6.1))': 1090 1506 dependencies: 1091 - '@isaacs/balanced-match': 4.0.1 1507 + '@eslint/core': 1.0.0 1508 + optionalDependencies: 1509 + eslint: 9.39.2(jiti@2.6.1) 1510 + 1511 + '@eslint/config-array@0.21.1': 1512 + dependencies: 1513 + '@eslint/object-schema': 2.1.7 1514 + debug: 4.4.3 1515 + minimatch: 3.1.2 1516 + transitivePeerDependencies: 1517 + - supports-color 1518 + 1519 + '@eslint/config-helpers@0.4.2': 1520 + dependencies: 1521 + '@eslint/core': 0.17.0 1522 + 1523 + '@eslint/core@0.17.0': 1524 + dependencies: 1525 + '@types/json-schema': 7.0.15 1526 + 1527 + '@eslint/core@1.0.0': 1528 + dependencies: 1529 + '@types/json-schema': 7.0.15 1530 + 1531 + '@eslint/eslintrc@3.3.3': 1532 + dependencies: 1533 + ajv: 6.12.6 1534 + debug: 4.4.3 1535 + espree: 10.4.0 1536 + globals: 14.0.0 1537 + ignore: 5.3.2 1538 + import-fresh: 3.3.1 1539 + js-yaml: 4.1.1 1540 + minimatch: 3.1.2 1541 + strip-json-comments: 3.1.1 1542 + transitivePeerDependencies: 1543 + - supports-color 1544 + 1545 + '@eslint/js@9.39.2': {} 1546 + 1547 + '@eslint/object-schema@2.1.7': {} 1548 + 1549 + '@eslint/plugin-kit@0.4.1': 1550 + dependencies: 1551 + '@eslint/core': 0.17.0 1552 + levn: 0.4.1 1553 + 1554 + '@humanfs/core@0.19.1': {} 1555 + 1556 + '@humanfs/node@0.16.7': 1557 + dependencies: 1558 + '@humanfs/core': 0.19.1 1559 + '@humanwhocodes/retry': 0.4.3 1560 + 1561 + '@humanwhocodes/module-importer@1.0.1': {} 1562 + 1563 + '@humanwhocodes/retry@0.4.3': {} 1092 1564 1093 1565 '@jridgewell/gen-mapping@0.3.13': 1094 1566 dependencies: ··· 1109 1581 '@jridgewell/resolve-uri': 3.1.2 1110 1582 '@jridgewell/sourcemap-codec': 1.5.5 1111 1583 1112 - '@noble/curves@1.9.7': 1113 - dependencies: 1114 - '@noble/hashes': 1.8.0 1115 - 1116 - '@noble/hashes@1.8.0': {} 1584 + '@noble/secp256k1@3.0.0': {} 1117 1585 1118 1586 '@rollup/rollup-android-arm-eabi@4.55.1': 1119 1587 optional: true ··· 1190 1658 '@rollup/rollup-win32-x64-msvc@4.55.1': 1191 1659 optional: true 1192 1660 1661 + '@standard-schema/spec@1.1.0': {} 1662 + 1193 1663 '@sveltejs/acorn-typescript@1.0.8(acorn@8.15.0)': 1194 1664 dependencies: 1195 1665 acorn: 8.15.0 1196 1666 1197 - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)))(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4))': 1667 + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))': 1198 1668 dependencies: 1199 - '@sveltejs/vite-plugin-svelte': 6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)) 1669 + '@sveltejs/vite-plugin-svelte': 6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)) 1200 1670 obug: 2.1.1 1201 1671 svelte: 5.46.1 1202 - vite: 7.3.1(@types/node@24.10.4) 1672 + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2) 1203 1673 1204 - '@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4))': 1674 + '@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))': 1205 1675 dependencies: 1206 - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)))(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)) 1676 + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.3(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.46.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)) 1207 1677 deepmerge: 4.3.1 1208 1678 magic-string: 0.30.21 1209 1679 obug: 2.1.1 1210 1680 svelte: 5.46.1 1211 - vite: 7.3.1(@types/node@24.10.4) 1212 - vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.4)) 1681 + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2) 1682 + vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)) 1683 + 1684 + '@tailwindcss/node@4.1.18': 1685 + dependencies: 1686 + '@jridgewell/remapping': 2.3.5 1687 + enhanced-resolve: 5.18.4 1688 + jiti: 2.6.1 1689 + lightningcss: 1.30.2 1690 + magic-string: 0.30.21 1691 + source-map-js: 1.2.1 1692 + tailwindcss: 4.1.18 1693 + 1694 + '@tailwindcss/oxide-android-arm64@4.1.18': 1695 + optional: true 1696 + 1697 + '@tailwindcss/oxide-darwin-arm64@4.1.18': 1698 + optional: true 1699 + 1700 + '@tailwindcss/oxide-darwin-x64@4.1.18': 1701 + optional: true 1702 + 1703 + '@tailwindcss/oxide-freebsd-x64@4.1.18': 1704 + optional: true 1705 + 1706 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 1707 + optional: true 1213 1708 1214 - '@ts-morph/common@0.28.1': 1709 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 1710 + optional: true 1711 + 1712 + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 1713 + optional: true 1714 + 1715 + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 1716 + optional: true 1717 + 1718 + '@tailwindcss/oxide-linux-x64-musl@4.1.18': 1719 + optional: true 1720 + 1721 + '@tailwindcss/oxide-wasm32-wasi@4.1.18': 1722 + optional: true 1723 + 1724 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 1725 + optional: true 1726 + 1727 + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 1728 + optional: true 1729 + 1730 + '@tailwindcss/oxide@4.1.18': 1731 + optionalDependencies: 1732 + '@tailwindcss/oxide-android-arm64': 4.1.18 1733 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 1734 + '@tailwindcss/oxide-darwin-x64': 4.1.18 1735 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 1736 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 1737 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 1738 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 1739 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 1740 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 1741 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 1742 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 1743 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 1744 + 1745 + '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2))': 1215 1746 dependencies: 1216 - minimatch: 10.1.1 1217 - path-browserify: 1.0.1 1218 - tinyglobby: 0.2.15 1747 + '@tailwindcss/node': 4.1.18 1748 + '@tailwindcss/oxide': 4.1.18 1749 + tailwindcss: 4.1.18 1750 + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2) 1219 1751 1220 1752 '@tsconfig/svelte@5.0.6': {} 1221 1753 1222 1754 '@types/estree@1.0.8': {} 1223 1755 1756 + '@types/json-schema@7.0.15': {} 1757 + 1224 1758 '@types/node@24.10.4': 1225 1759 dependencies: 1226 1760 undici-types: 7.16.0 1227 1761 1228 - abort-controller@3.0.0: 1762 + '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': 1229 1763 dependencies: 1230 - event-target-shim: 5.0.1 1764 + '@eslint-community/regexpp': 4.12.2 1765 + '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 1766 + '@typescript-eslint/scope-manager': 8.52.0 1767 + '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 1768 + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 1769 + '@typescript-eslint/visitor-keys': 8.52.0 1770 + eslint: 9.39.2(jiti@2.6.1) 1771 + ignore: 7.0.5 1772 + natural-compare: 1.4.0 1773 + ts-api-utils: 2.4.0(typescript@5.9.3) 1774 + typescript: 5.9.3 1775 + transitivePeerDependencies: 1776 + - supports-color 1777 + 1778 + '@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': 1779 + dependencies: 1780 + '@typescript-eslint/scope-manager': 8.52.0 1781 + '@typescript-eslint/types': 8.52.0 1782 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) 1783 + '@typescript-eslint/visitor-keys': 8.52.0 1784 + debug: 4.4.3 1785 + eslint: 9.39.2(jiti@2.6.1) 1786 + typescript: 5.9.3 1787 + transitivePeerDependencies: 1788 + - supports-color 1789 + 1790 + '@typescript-eslint/project-service@8.52.0(typescript@5.9.3)': 1791 + dependencies: 1792 + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) 1793 + '@typescript-eslint/types': 8.52.0 1794 + debug: 4.4.3 1795 + typescript: 5.9.3 1796 + transitivePeerDependencies: 1797 + - supports-color 1798 + 1799 + '@typescript-eslint/scope-manager@8.52.0': 1800 + dependencies: 1801 + '@typescript-eslint/types': 8.52.0 1802 + '@typescript-eslint/visitor-keys': 8.52.0 1803 + 1804 + '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.9.3)': 1805 + dependencies: 1806 + typescript: 5.9.3 1807 + 1808 + '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': 1809 + dependencies: 1810 + '@typescript-eslint/types': 8.52.0 1811 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) 1812 + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 1813 + debug: 4.4.3 1814 + eslint: 9.39.2(jiti@2.6.1) 1815 + ts-api-utils: 2.4.0(typescript@5.9.3) 1816 + typescript: 5.9.3 1817 + transitivePeerDependencies: 1818 + - supports-color 1819 + 1820 + '@typescript-eslint/types@8.52.0': {} 1821 + 1822 + '@typescript-eslint/typescript-estree@8.52.0(typescript@5.9.3)': 1823 + dependencies: 1824 + '@typescript-eslint/project-service': 8.52.0(typescript@5.9.3) 1825 + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.9.3) 1826 + '@typescript-eslint/types': 8.52.0 1827 + '@typescript-eslint/visitor-keys': 8.52.0 1828 + debug: 4.4.3 1829 + minimatch: 9.0.5 1830 + semver: 7.7.3 1831 + tinyglobby: 0.2.15 1832 + ts-api-utils: 2.4.0(typescript@5.9.3) 1833 + typescript: 5.9.3 1834 + transitivePeerDependencies: 1835 + - supports-color 1836 + 1837 + '@typescript-eslint/utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': 1838 + dependencies: 1839 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) 1840 + '@typescript-eslint/scope-manager': 8.52.0 1841 + '@typescript-eslint/types': 8.52.0 1842 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) 1843 + eslint: 9.39.2(jiti@2.6.1) 1844 + typescript: 5.9.3 1845 + transitivePeerDependencies: 1846 + - supports-color 1847 + 1848 + '@typescript-eslint/visitor-keys@8.52.0': 1849 + dependencies: 1850 + '@typescript-eslint/types': 8.52.0 1851 + eslint-visitor-keys: 4.2.1 1852 + 1853 + acorn-jsx@5.3.2(acorn@8.15.0): 1854 + dependencies: 1855 + acorn: 8.15.0 1231 1856 1232 1857 acorn@8.15.0: {} 1233 1858 1234 - ansi-regex@5.0.1: {} 1859 + ajv@6.12.6: 1860 + dependencies: 1861 + fast-deep-equal: 3.1.3 1862 + fast-json-stable-stringify: 2.1.0 1863 + json-schema-traverse: 0.4.1 1864 + uri-js: 4.4.1 1235 1865 1236 1866 ansi-styles@4.3.0: 1237 1867 dependencies: 1238 1868 color-convert: 2.0.1 1869 + 1870 + argparse@2.0.1: {} 1239 1871 1240 1872 aria-query@5.3.2: {} 1241 1873 1242 - atomic-sleep@1.0.0: {} 1874 + axobject-query@4.1.0: {} 1243 1875 1244 - axobject-query@4.1.0: {} 1876 + balanced-match@1.0.2: {} 1245 1877 1246 - base64-js@1.5.1: {} 1878 + brace-expansion@1.1.12: 1879 + dependencies: 1880 + balanced-match: 1.0.2 1881 + concat-map: 0.0.1 1247 1882 1248 - buffer@6.0.3: 1883 + brace-expansion@2.0.2: 1249 1884 dependencies: 1250 - base64-js: 1.5.1 1251 - ieee754: 1.2.1 1885 + balanced-match: 1.0.2 1252 1886 1253 - cborg@1.10.2: {} 1887 + callsites@3.1.0: {} 1254 1888 1255 - chokidar@4.0.3: 1889 + chalk@4.1.2: 1256 1890 dependencies: 1257 - readdirp: 4.1.2 1891 + ansi-styles: 4.3.0 1892 + supports-color: 7.2.0 1258 1893 1259 - cliui@8.0.1: 1894 + chokidar@4.0.3: 1260 1895 dependencies: 1261 - string-width: 4.2.3 1262 - strip-ansi: 6.0.1 1263 - wrap-ansi: 7.0.0 1896 + readdirp: 4.1.2 1264 1897 1265 1898 clsx@2.1.1: {} 1266 - 1267 - code-block-writer@13.0.3: {} 1268 1899 1269 1900 color-convert@2.0.1: 1270 1901 dependencies: ··· 1272 1903 1273 1904 color-name@1.1.4: {} 1274 1905 1275 - core-js@3.47.0: {} 1906 + concat-map@0.0.1: {} 1907 + 1908 + cross-spawn@7.0.6: 1909 + dependencies: 1910 + path-key: 3.1.1 1911 + shebang-command: 2.0.0 1912 + which: 2.0.2 1913 + 1914 + cssesc@3.0.0: {} 1915 + 1916 + daisyui@5.5.14: {} 1917 + 1918 + debug@4.4.3: 1919 + dependencies: 1920 + ms: 2.1.3 1921 + 1922 + deep-is@0.1.4: {} 1276 1923 1277 1924 deepmerge@4.3.1: {} 1278 1925 1926 + detect-libc@2.1.2: {} 1927 + 1279 1928 devalue@5.6.1: {} 1280 1929 1281 - emoji-regex@8.0.0: {} 1930 + enhanced-resolve@5.18.4: 1931 + dependencies: 1932 + graceful-fs: 4.2.11 1933 + tapable: 2.3.0 1282 1934 1283 1935 esbuild@0.27.2: 1284 1936 optionalDependencies: ··· 1309 1961 '@esbuild/win32-ia32': 0.27.2 1310 1962 '@esbuild/win32-x64': 0.27.2 1311 1963 1312 - escalade@3.2.0: {} 1964 + escape-string-regexp@4.0.0: {} 1965 + 1966 + eslint-plugin-svelte@3.14.0(eslint@9.39.2(jiti@2.6.1))(svelte@5.46.1): 1967 + dependencies: 1968 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) 1969 + '@jridgewell/sourcemap-codec': 1.5.5 1970 + eslint: 9.39.2(jiti@2.6.1) 1971 + esutils: 2.0.3 1972 + globals: 16.5.0 1973 + known-css-properties: 0.37.0 1974 + postcss: 8.5.6 1975 + postcss-load-config: 3.1.4(postcss@8.5.6) 1976 + postcss-safe-parser: 7.0.1(postcss@8.5.6) 1977 + semver: 7.7.3 1978 + svelte-eslint-parser: 1.4.1(svelte@5.46.1) 1979 + optionalDependencies: 1980 + svelte: 5.46.1 1981 + transitivePeerDependencies: 1982 + - ts-node 1983 + 1984 + eslint-scope@8.4.0: 1985 + dependencies: 1986 + esrecurse: 4.3.0 1987 + estraverse: 5.3.0 1988 + 1989 + eslint-visitor-keys@3.4.3: {} 1990 + 1991 + eslint-visitor-keys@4.2.1: {} 1992 + 1993 + eslint@9.39.2(jiti@2.6.1): 1994 + dependencies: 1995 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) 1996 + '@eslint-community/regexpp': 4.12.2 1997 + '@eslint/config-array': 0.21.1 1998 + '@eslint/config-helpers': 0.4.2 1999 + '@eslint/core': 0.17.0 2000 + '@eslint/eslintrc': 3.3.3 2001 + '@eslint/js': 9.39.2 2002 + '@eslint/plugin-kit': 0.4.1 2003 + '@humanfs/node': 0.16.7 2004 + '@humanwhocodes/module-importer': 1.0.1 2005 + '@humanwhocodes/retry': 0.4.3 2006 + '@types/estree': 1.0.8 2007 + ajv: 6.12.6 2008 + chalk: 4.1.2 2009 + cross-spawn: 7.0.6 2010 + debug: 4.4.3 2011 + escape-string-regexp: 4.0.0 2012 + eslint-scope: 8.4.0 2013 + eslint-visitor-keys: 4.2.1 2014 + espree: 10.4.0 2015 + esquery: 1.7.0 2016 + esutils: 2.0.3 2017 + fast-deep-equal: 3.1.3 2018 + file-entry-cache: 8.0.0 2019 + find-up: 5.0.0 2020 + glob-parent: 6.0.2 2021 + ignore: 5.3.2 2022 + imurmurhash: 0.1.4 2023 + is-glob: 4.0.3 2024 + json-stable-stringify-without-jsonify: 1.0.1 2025 + lodash.merge: 4.6.2 2026 + minimatch: 3.1.2 2027 + natural-compare: 1.4.0 2028 + optionator: 0.9.4 2029 + optionalDependencies: 2030 + jiti: 2.6.1 2031 + transitivePeerDependencies: 2032 + - supports-color 1313 2033 1314 2034 esm-env@1.2.2: {} 1315 2035 2036 + espree@10.4.0: 2037 + dependencies: 2038 + acorn: 8.15.0 2039 + acorn-jsx: 5.3.2(acorn@8.15.0) 2040 + eslint-visitor-keys: 4.2.1 2041 + 2042 + esquery@1.7.0: 2043 + dependencies: 2044 + estraverse: 5.3.0 2045 + 1316 2046 esrap@2.2.1: 1317 2047 dependencies: 1318 2048 '@jridgewell/sourcemap-codec': 1.5.5 1319 2049 1320 - event-target-shim@5.0.1: {} 2050 + esrecurse@4.3.0: 2051 + dependencies: 2052 + estraverse: 5.3.0 1321 2053 1322 - events@3.3.0: {} 2054 + estraverse@5.3.0: {} 1323 2055 1324 - fast-redact@3.5.0: {} 2056 + esutils@2.0.3: {} 2057 + 2058 + fast-deep-equal@3.1.3: {} 2059 + 2060 + fast-json-stable-stringify@2.1.0: {} 2061 + 2062 + fast-levenshtein@2.0.6: {} 1325 2063 1326 2064 fdir@6.5.0(picomatch@4.0.3): 1327 2065 optionalDependencies: 1328 2066 picomatch: 4.0.3 1329 2067 2068 + file-entry-cache@8.0.0: 2069 + dependencies: 2070 + flat-cache: 4.0.1 2071 + 2072 + find-up@5.0.0: 2073 + dependencies: 2074 + locate-path: 6.0.0 2075 + path-exists: 4.0.0 2076 + 2077 + flat-cache@4.0.1: 2078 + dependencies: 2079 + flatted: 3.3.3 2080 + keyv: 4.5.4 2081 + 2082 + flatted@3.3.3: {} 2083 + 1330 2084 fsevents@2.3.3: 1331 2085 optional: true 1332 2086 1333 - get-caller-file@2.0.5: {} 2087 + glob-parent@6.0.2: 2088 + dependencies: 2089 + is-glob: 4.0.3 1334 2090 1335 - ieee754@1.2.1: {} 2091 + globals@14.0.0: {} 1336 2092 1337 - is-fullwidth-code-point@3.0.0: {} 2093 + globals@16.5.0: {} 2094 + 2095 + globals@17.0.0: {} 2096 + 2097 + graceful-fs@4.2.11: {} 2098 + 2099 + has-flag@4.0.0: {} 2100 + 2101 + ignore@5.3.2: {} 2102 + 2103 + ignore@7.0.5: {} 2104 + 2105 + import-fresh@3.3.1: 2106 + dependencies: 2107 + parent-module: 1.0.1 2108 + resolve-from: 4.0.0 2109 + 2110 + imurmurhash@0.1.4: {} 2111 + 2112 + is-extglob@2.1.1: {} 2113 + 2114 + is-glob@4.0.3: 2115 + dependencies: 2116 + is-extglob: 2.1.1 1338 2117 1339 2118 is-reference@3.0.3: 1340 2119 dependencies: 1341 2120 '@types/estree': 1.0.8 1342 2121 1343 - iso-datestring-validator@2.2.2: {} 2122 + isexe@2.0.0: {} 2123 + 2124 + jiti@2.6.1: {} 2125 + 2126 + js-yaml@4.1.1: 2127 + dependencies: 2128 + argparse: 2.0.1 2129 + 2130 + json-buffer@3.0.1: {} 2131 + 2132 + json-schema-traverse@0.4.1: {} 2133 + 2134 + json-stable-stringify-without-jsonify@1.0.1: {} 2135 + 2136 + keyv@4.5.4: 2137 + dependencies: 2138 + json-buffer: 3.0.1 2139 + 2140 + known-css-properties@0.37.0: {} 2141 + 2142 + levn@0.4.1: 2143 + dependencies: 2144 + prelude-ls: 1.2.1 2145 + type-check: 0.4.0 2146 + 2147 + lightningcss-android-arm64@1.30.2: 2148 + optional: true 2149 + 2150 + lightningcss-darwin-arm64@1.30.2: 2151 + optional: true 2152 + 2153 + lightningcss-darwin-x64@1.30.2: 2154 + optional: true 2155 + 2156 + lightningcss-freebsd-x64@1.30.2: 2157 + optional: true 2158 + 2159 + lightningcss-linux-arm-gnueabihf@1.30.2: 2160 + optional: true 2161 + 2162 + lightningcss-linux-arm64-gnu@1.30.2: 2163 + optional: true 2164 + 2165 + lightningcss-linux-arm64-musl@1.30.2: 2166 + optional: true 2167 + 2168 + lightningcss-linux-x64-gnu@1.30.2: 2169 + optional: true 2170 + 2171 + lightningcss-linux-x64-musl@1.30.2: 2172 + optional: true 2173 + 2174 + lightningcss-win32-arm64-msvc@1.30.2: 2175 + optional: true 2176 + 2177 + lightningcss-win32-x64-msvc@1.30.2: 2178 + optional: true 2179 + 2180 + lightningcss@1.30.2: 2181 + dependencies: 2182 + detect-libc: 2.1.2 2183 + optionalDependencies: 2184 + lightningcss-android-arm64: 1.30.2 2185 + lightningcss-darwin-arm64: 1.30.2 2186 + lightningcss-darwin-x64: 1.30.2 2187 + lightningcss-freebsd-x64: 1.30.2 2188 + lightningcss-linux-arm-gnueabihf: 1.30.2 2189 + lightningcss-linux-arm64-gnu: 1.30.2 2190 + lightningcss-linux-arm64-musl: 1.30.2 2191 + lightningcss-linux-x64-gnu: 1.30.2 2192 + lightningcss-linux-x64-musl: 1.30.2 2193 + lightningcss-win32-arm64-msvc: 1.30.2 2194 + lightningcss-win32-x64-msvc: 1.30.2 2195 + 2196 + lilconfig@2.1.0: {} 1344 2197 1345 2198 locate-character@3.0.0: {} 1346 2199 1347 - lru-cache@10.4.3: {} 2200 + locate-path@6.0.0: 2201 + dependencies: 2202 + p-locate: 5.0.0 2203 + 2204 + lodash.merge@4.6.2: {} 1348 2205 1349 2206 magic-string@0.30.21: 1350 2207 dependencies: 1351 2208 '@jridgewell/sourcemap-codec': 1.5.5 1352 2209 1353 - minimatch@10.1.1: 2210 + minimatch@3.1.2: 2211 + dependencies: 2212 + brace-expansion: 1.1.12 2213 + 2214 + minimatch@9.0.5: 1354 2215 dependencies: 1355 - '@isaacs/brace-expansion': 5.0.0 2216 + brace-expansion: 2.0.2 1356 2217 1357 2218 mri@1.2.0: {} 1358 2219 1359 - multiformats@9.9.0: {} 2220 + ms@2.1.3: {} 1360 2221 1361 2222 nanoid@3.3.11: {} 1362 2223 2224 + natural-compare@1.4.0: {} 2225 + 1363 2226 obug@2.1.1: {} 1364 2227 1365 - on-exit-leak-free@2.1.2: {} 2228 + optionator@0.9.4: 2229 + dependencies: 2230 + deep-is: 0.1.4 2231 + fast-levenshtein: 2.0.6 2232 + levn: 0.4.1 2233 + prelude-ls: 1.2.1 2234 + type-check: 0.4.0 2235 + word-wrap: 1.2.5 1366 2236 1367 - path-browserify@1.0.1: {} 2237 + p-limit@3.1.0: 2238 + dependencies: 2239 + yocto-queue: 0.1.0 2240 + 2241 + p-locate@5.0.0: 2242 + dependencies: 2243 + p-limit: 3.1.0 2244 + 2245 + parent-module@1.0.1: 2246 + dependencies: 2247 + callsites: 3.1.0 2248 + 2249 + path-exists@4.0.0: {} 2250 + 2251 + path-key@3.1.1: {} 1368 2252 1369 2253 picocolors@1.1.1: {} 1370 2254 1371 2255 picomatch@4.0.3: {} 1372 2256 1373 - pino-abstract-transport@1.2.0: 2257 + postcss-load-config@3.1.4(postcss@8.5.6): 1374 2258 dependencies: 1375 - readable-stream: 4.7.0 1376 - split2: 4.2.0 2259 + lilconfig: 2.1.0 2260 + yaml: 1.10.2 2261 + optionalDependencies: 2262 + postcss: 8.5.6 1377 2263 1378 - pino-std-serializers@6.2.2: {} 2264 + postcss-safe-parser@7.0.1(postcss@8.5.6): 2265 + dependencies: 2266 + postcss: 8.5.6 1379 2267 1380 - pino@8.21.0: 2268 + postcss-scss@4.0.9(postcss@8.5.6): 2269 + dependencies: 2270 + postcss: 8.5.6 2271 + 2272 + postcss-selector-parser@7.1.1: 1381 2273 dependencies: 1382 - atomic-sleep: 1.0.0 1383 - fast-redact: 3.5.0 1384 - on-exit-leak-free: 2.1.2 1385 - pino-abstract-transport: 1.2.0 1386 - pino-std-serializers: 6.2.2 1387 - process-warning: 3.0.0 1388 - quick-format-unescaped: 4.0.4 1389 - real-require: 0.2.0 1390 - safe-stable-stringify: 2.5.0 1391 - sonic-boom: 3.8.1 1392 - thread-stream: 2.7.0 2274 + cssesc: 3.0.0 2275 + util-deprecate: 1.0.2 1393 2276 1394 2277 postcss@8.5.6: 1395 2278 dependencies: ··· 1397 2280 picocolors: 1.1.1 1398 2281 source-map-js: 1.2.1 1399 2282 1400 - prettier@3.7.4: {} 1401 - 1402 - process-warning@3.0.0: {} 1403 - 1404 - process@0.11.10: {} 1405 - 1406 - quick-format-unescaped@4.0.4: {} 2283 + prelude-ls@1.2.1: {} 1407 2284 1408 - readable-stream@4.7.0: 1409 - dependencies: 1410 - abort-controller: 3.0.0 1411 - buffer: 6.0.3 1412 - events: 3.3.0 1413 - process: 0.11.10 1414 - string_decoder: 1.3.0 2285 + punycode@2.3.1: {} 1415 2286 1416 2287 readdirp@4.1.2: {} 1417 2288 1418 - real-require@0.2.0: {} 1419 - 1420 - require-directory@2.1.1: {} 2289 + resolve-from@4.0.0: {} 1421 2290 1422 2291 rollup@4.55.1: 1423 2292 dependencies: ··· 1454 2323 dependencies: 1455 2324 mri: 1.2.0 1456 2325 1457 - safe-buffer@5.2.1: {} 1458 - 1459 - safe-stable-stringify@2.5.0: {} 2326 + semver@7.7.3: {} 1460 2327 1461 - sonic-boom@3.8.1: 2328 + shebang-command@2.0.0: 1462 2329 dependencies: 1463 - atomic-sleep: 1.0.0 1464 - 1465 - source-map-js@1.2.1: {} 2330 + shebang-regex: 3.0.0 1466 2331 1467 - split2@4.2.0: {} 2332 + shebang-regex@3.0.0: {} 1468 2333 1469 - string-width@4.2.3: 1470 - dependencies: 1471 - emoji-regex: 8.0.0 1472 - is-fullwidth-code-point: 3.0.0 1473 - strip-ansi: 6.0.1 2334 + source-map-js@1.2.1: {} 1474 2335 1475 - string_decoder@1.3.0: 1476 - dependencies: 1477 - safe-buffer: 5.2.1 2336 + strip-json-comments@3.1.1: {} 1478 2337 1479 - strip-ansi@6.0.1: 2338 + supports-color@7.2.0: 1480 2339 dependencies: 1481 - ansi-regex: 5.0.1 2340 + has-flag: 4.0.0 1482 2341 1483 2342 svelte-check@4.3.5(picomatch@4.0.3)(svelte@5.46.1)(typescript@5.9.3): 1484 2343 dependencies: ··· 1492 2351 transitivePeerDependencies: 1493 2352 - picomatch 1494 2353 2354 + svelte-eslint-parser@1.4.1(svelte@5.46.1): 2355 + dependencies: 2356 + eslint-scope: 8.4.0 2357 + eslint-visitor-keys: 4.2.1 2358 + espree: 10.4.0 2359 + postcss: 8.5.6 2360 + postcss-scss: 4.0.9(postcss@8.5.6) 2361 + postcss-selector-parser: 7.1.1 2362 + optionalDependencies: 2363 + svelte: 5.46.1 2364 + 1495 2365 svelte@5.46.1: 1496 2366 dependencies: 1497 2367 '@jridgewell/remapping': 2.3.5 ··· 1510 2380 magic-string: 0.30.21 1511 2381 zimmerframe: 1.1.4 1512 2382 1513 - thread-stream@2.7.0: 1514 - dependencies: 1515 - real-require: 0.2.0 2383 + tailwindcss@4.1.18: {} 2384 + 2385 + tapable@2.3.0: {} 1516 2386 1517 2387 tinyglobby@0.2.15: 1518 2388 dependencies: 1519 2389 fdir: 6.5.0(picomatch@4.0.3) 1520 2390 picomatch: 4.0.3 1521 2391 1522 - ts-morph@27.0.2: 2392 + ts-api-utils@2.4.0(typescript@5.9.3): 1523 2393 dependencies: 1524 - '@ts-morph/common': 0.28.1 1525 - code-block-writer: 13.0.3 2394 + typescript: 5.9.3 1526 2395 1527 - tslib@2.8.1: {} 2396 + type-check@0.4.0: 2397 + dependencies: 2398 + prelude-ls: 1.2.1 2399 + 2400 + typescript-eslint@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): 2401 + dependencies: 2402 + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 2403 + '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 2404 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.9.3) 2405 + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) 2406 + eslint: 9.39.2(jiti@2.6.1) 2407 + typescript: 5.9.3 2408 + transitivePeerDependencies: 2409 + - supports-color 1528 2410 1529 2411 typescript@5.9.3: {} 1530 - 1531 - uint8arrays@3.0.0: 1532 - dependencies: 1533 - multiformats: 9.9.0 1534 2412 1535 2413 undici-types@7.16.0: {} 1536 2414 1537 2415 unicode-segmenter@0.14.5: {} 1538 2416 1539 - varint@6.0.0: {} 2417 + uri-js@4.4.1: 2418 + dependencies: 2419 + punycode: 2.3.1 2420 + 2421 + util-deprecate@1.0.2: {} 1540 2422 1541 - vite@7.3.1(@types/node@24.10.4): 2423 + vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2): 1542 2424 dependencies: 1543 2425 esbuild: 0.27.2 1544 2426 fdir: 6.5.0(picomatch@4.0.3) ··· 1549 2431 optionalDependencies: 1550 2432 '@types/node': 24.10.4 1551 2433 fsevents: 2.3.3 2434 + jiti: 2.6.1 2435 + lightningcss: 1.30.2 1552 2436 1553 - vitefu@1.1.1(vite@7.3.1(@types/node@24.10.4)): 2437 + vitefu@1.1.1(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)): 1554 2438 optionalDependencies: 1555 - vite: 7.3.1(@types/node@24.10.4) 2439 + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2) 1556 2440 1557 - wrap-ansi@7.0.0: 2441 + which@2.0.2: 1558 2442 dependencies: 1559 - ansi-styles: 4.3.0 1560 - string-width: 4.2.3 1561 - strip-ansi: 6.0.1 2443 + isexe: 2.0.0 1562 2444 1563 - y18n@5.0.8: {} 2445 + word-wrap@1.2.5: {} 1564 2446 1565 - yargs-parser@21.1.1: {} 2447 + yaml@1.10.2: {} 1566 2448 1567 - yargs@17.7.2: 1568 - dependencies: 1569 - cliui: 8.0.1 1570 - escalade: 3.2.0 1571 - get-caller-file: 2.0.5 1572 - require-directory: 2.1.1 1573 - string-width: 4.2.3 1574 - y18n: 5.0.8 1575 - yargs-parser: 21.1.1 2449 + yocto-queue@0.1.0: {} 1576 2450 1577 2451 zimmerframe@1.1.4: {} 1578 - 1579 - zod@3.25.76: {}
public/dude.png

This is a binary file and will not be displayed.

public/slowPoke.png

This is a binary file and will not be displayed.

-1
public/vite.svg
··· 1 - <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
+40 -24
src/App.svelte
··· 1 1 <script lang="ts"> 2 2 3 - import SearchForm from "./lib/SearchForm.svelte"; 4 - import RepoStats from "./lib/RepoStats.svelte"; 5 - 6 - let showRepoStats = $state(false) 7 - let did = $state("") 8 - let pdsUrl = $state("") 3 + import SearchForm from './lib/SearchForm.svelte'; 4 + import RepoStats from './lib/RepoStats.svelte'; 9 5 10 - const resolvedResult = (didResult: string, pdsUrlResult: string) => { 11 - did = didResult; 12 - pdsUrl = pdsUrlResult; 13 - showRepoStats = true; 14 - } 6 + let showRepoStats = $state(false); 7 + let searchResults = $state({ 8 + did: '', 9 + handle: '', 10 + pdsUrl: '', 11 + slowPoke: false 12 + }); 15 13 14 + const resolvedResult = (didResult: string, handle: string, pdsUrlResult: string, slowPokeResult: boolean) => { 15 + searchResults = { did: didResult, handle: handle, pdsUrl: pdsUrlResult, slowPoke: slowPokeResult }; 16 + showRepoStats = true; 17 + }; 16 18 17 19 </script> 18 20 19 - <main> 20 - <h1>Repo Walk Example</h1> 21 + <a href="https://tangled.org/baileytownsend.dev/repo-walk-example" target="_blank" rel="noopener noreferrer" class="fixed top-4 right-4 z-50 btn btn-ghost btn-sm gap-2 hover:scale-110 transition-transform shadow-lg"> 22 + <svg version="1.1" class="size-6" width="25" height="25" viewBox="0 0 25 25" xmlns="http://www.w3.org/2000/svg"> 23 + <g transform="translate(-0.42924038,-0.87777209)"> 24 + <path fill="currentColor" style="stroke-width:0.111183;" d="m 16.775491,24.987061 c -0.78517,-0.0064 -1.384202,-0.234614 -2.033994,-0.631295 -0.931792,-0.490188 -1.643475,-1.31368 -2.152014,-2.221647 C 11.781409,23.136647 10.701392,23.744942 9.4922931,24.0886 8.9774725,24.238111 8.0757679,24.389777 6.5811304,23.84827 4.4270703,23.124679 2.8580086,20.883331 3.0363279,18.599583 3.0037061,17.652919 3.3488675,16.723769 3.8381157,15.925061 2.5329485,15.224503 1.4686756,14.048584 1.0611184,12.606459 0.81344502,11.816973 0.82385989,10.966486 0.91519098,10.154906 1.2422711,8.2387903 2.6795811,6.5725716 4.5299585,5.9732484 5.2685364,4.290122 6.8802592,3.0349975 8.706276,2.7794663 c 1.2124148,-0.1688264 2.46744,0.084987 3.52811,0.7011837 1.545426,-1.7139736 4.237779,-2.2205077 6.293579,-1.1676231 1.568222,0.7488935 2.689625,2.3113526 2.961888,4.0151464 1.492195,0.5977882 2.749007,1.8168898 3.242225,3.3644951 0.329805,0.9581836 0.340709,2.0135956 0.127128,2.9974286 -0.381606,1.535184 -1.465322,2.842146 -2.868035,3.556463 0.0034,0.273204 0.901506,2.243045 0.751284,3.729647 -0.03281,1.858525 -1.211631,3.619894 -2.846433,4.475452 -0.953967,0.556812 -2.084452,0.546309 -3.120531,0.535398 z m -4.470079,-5.349839 c 1.322246,-0.147248 2.189053,-1.300106 2.862307,-2.338363 0.318287,-0.472954 0.561404,-1.002348 0.803,-1.505815 0.313265,0.287151 0.578698,0.828085 1.074141,0.956909 0.521892,0.162542 1.133743,0.03052 1.45325,-0.443554 0.611414,-1.140449 0.31004,-2.516537 -0.04602,-3.698347 C 18.232844,11.92927 17.945151,11.232927 17.397785,10.751793 17.514522,9.9283111 17.026575,9.0919791 16.332883,8.6609491 15.741721,9.1323278 14.842258,9.1294949 14.271975,8.6252369 13.178927,9.7400102 12.177239,9.7029996 11.209704,8.8195135 10.992255,8.6209543 10.577326,10.031484 9.1211947,9.2324497 8.2846288,9.9333947 7.6359672,10.607693 7.0611981,11.578553 6.5026891,12.62523 5.9177873,13.554793 5.867393,14.69141 c -0.024234,0.66432 0.4948601,1.360337 1.1982269,1.306329 0.702996,0.06277 1.1815208,-0.629091 1.7138087,-0.916491 0.079382,0.927141 0.1688108,1.923227 0.4821259,2.828358 0.3596254,1.171275 1.6262605,1.915695 2.8251855,1.745211 0.08481,-0.0066 0.218672,-0.01769 0.218672,-0.0176 z m 0.686342,-3.497495 c -0.643126,-0.394168 -0.33365,-1.249599 -0.359402,-1.870938 0.064,-0.749774 0.115321,-1.538054 0.452402,-2.221125 0.356724,-0.487008 1.226721,-0.299139 1.265134,0.325689 -0.02558,0.628509 -0.314101,1.25416 -0.279646,1.9057 -0.07482,0.544043 0.05418,1.155133 -0.186476,1.652391 -0.197455,0.275121 -0.599638,0.355105 -0.892012,0.208283 z m -2.808766,-0.358124 c -0.605767,-0.328664 -0.4133176,-1.155655 -0.5083256,-1.73063 0.078762,-0.66567 0.013203,-1.510085 0.5705316,-1.976886 0.545037,-0.380109 1.286917,0.270803 1.029164,0.868384 -0.274913,0.755214 -0.09475,1.580345 -0.08893,2.34609 -0.104009,0.451702 -0.587146,0.691508 -1.002445,0.493042 z"></path> 25 + </g> 26 + </svg> 27 + <span class="hidden sm:inline">View on Tangled</span> 28 + </a> 21 29 22 - <div class="card"> 23 - {#if showRepoStats} 24 - <RepoStats did={did} pdsUrl={pdsUrl}/> 25 - {:else} 26 - <SearchForm resolvedResult={resolvedResult} /> 27 - {/if} 28 - </div> 30 + <main class="container mx-auto px-4 py-8 max-w-4xl"> 31 + <div class="text-center mb-8"> 32 + {#if showRepoStats} 33 + <h2 class="text-2xl font-bold text-primary">Walking <a class="link link-info" href="https://pdsls.dev/at://{searchResults.did}" target="_blank">{searchResults.handle}</a>'s repo {searchResults.slowPoke ? 'via api calls' : 'via export'}</h2> 34 + {:else} 35 + <h1 class="text-5xl font-bold mb-4">Walk The Repo</h1> 36 + <p class="text-lg mb-2">Demo showing why you may rather export the users whole repo instead of walking it via api calls if you want to access all the user's records.</p> 37 + <p class="text-sm opacity-70">Also shows how many records you have and how many of each kind if you're into that kind of thing...</p> 38 + {/if} 39 + </div> 29 40 41 + <div class="card bg-base-200 shadow-xl"> 42 + <div class="card-body"> 43 + {#if showRepoStats} 44 + <RepoStats did={searchResults.did} pdsUrl={searchResults.pdsUrl} slowPokeMode={searchResults.slowPoke} handle={searchResults.handle}/> 45 + {:else} 46 + <SearchForm resolvedResult={resolvedResult}/> 47 + {/if} 48 + </div> 49 + </div> 30 50 </main> 31 - 32 - <style> 33 - 34 - </style>
+3 -78
src/app.css
··· 1 - :root { 2 - font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; 3 - line-height: 1.5; 4 - font-weight: 400; 5 - 6 - color-scheme: light dark; 7 - color: rgba(255, 255, 255, 0.87); 8 - background-color: #242424; 9 - 10 - font-synthesis: none; 11 - text-rendering: optimizeLegibility; 12 - -webkit-font-smoothing: antialiased; 13 - -moz-osx-font-smoothing: grayscale; 14 - } 15 - 16 - a { 17 - font-weight: 500; 18 - color: #646cff; 19 - text-decoration: inherit; 20 - } 21 - a:hover { 22 - color: #535bf2; 23 - } 24 - 25 - body { 26 - margin: 0; 27 - display: flex; 28 - place-items: start; 29 - min-width: 320px; 30 - min-height: 100vh; 31 - } 32 - 33 - h1 { 34 - font-size: 3.2em; 35 - line-height: 1.1; 36 - } 37 - 38 - .card { 39 - padding: 2em; 40 - } 41 - 42 - #app { 43 - max-width: 1280px; 44 - margin: 0 auto; 45 - padding: 2rem; 46 - text-align: center; 47 - } 48 - 49 - button { 50 - border-radius: 8px; 51 - border: 1px solid transparent; 52 - padding: 0.6em 1.2em; 53 - font-size: 1em; 54 - font-weight: 500; 55 - font-family: inherit; 56 - background-color: #1a1a1a; 57 - cursor: pointer; 58 - transition: border-color 0.25s; 59 - } 60 - button:hover { 61 - border-color: #646cff; 62 - } 63 - button:focus, 64 - button:focus-visible { 65 - outline: 4px auto -webkit-focus-ring-color; 66 - } 67 - 68 - @media (prefers-color-scheme: light) { 69 - :root { 70 - color: #213547; 71 - background-color: #ffffff; 72 - } 73 - a:hover { 74 - color: #747bff; 75 - } 76 - button { 77 - background-color: #f9f9f9; 78 - } 1 + @import "tailwindcss"; 2 + @plugin "daisyui" { 3 + themes: forest --default; 79 4 }
-1
src/assets/svelte.svg
··· 1 - <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="26.6" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 308"><path fill="#FF3E00" d="M239.682 40.707C211.113-.182 154.69-12.301 113.895 13.69L42.247 59.356a82.198 82.198 0 0 0-37.135 55.056a86.566 86.566 0 0 0 8.536 55.576a82.425 82.425 0 0 0-12.296 30.719a87.596 87.596 0 0 0 14.964 66.244c28.574 40.893 84.997 53.007 125.787 27.016l71.648-45.664a82.182 82.182 0 0 0 37.135-55.057a86.601 86.601 0 0 0-8.53-55.577a82.409 82.409 0 0 0 12.29-30.718a87.573 87.573 0 0 0-14.963-66.244"></path><path fill="#FFF" d="M106.889 270.841c-23.102 6.007-47.497-3.036-61.103-22.648a52.685 52.685 0 0 1-9.003-39.85a49.978 49.978 0 0 1 1.713-6.693l1.35-4.115l3.671 2.697a92.447 92.447 0 0 0 28.036 14.007l2.663.808l-.245 2.659a16.067 16.067 0 0 0 2.89 10.656a17.143 17.143 0 0 0 18.397 6.828a15.786 15.786 0 0 0 4.403-1.935l71.67-45.672a14.922 14.922 0 0 0 6.734-9.977a15.923 15.923 0 0 0-2.713-12.011a17.156 17.156 0 0 0-18.404-6.832a15.78 15.78 0 0 0-4.396 1.933l-27.35 17.434a52.298 52.298 0 0 1-14.553 6.391c-23.101 6.007-47.497-3.036-61.101-22.649a52.681 52.681 0 0 1-9.004-39.849a49.428 49.428 0 0 1 22.34-33.114l71.664-45.677a52.218 52.218 0 0 1 14.563-6.398c23.101-6.007 47.497 3.036 61.101 22.648a52.685 52.685 0 0 1 9.004 39.85a50.559 50.559 0 0 1-1.713 6.692l-1.35 4.116l-3.67-2.693a92.373 92.373 0 0 0-28.037-14.013l-2.664-.809l.246-2.658a16.099 16.099 0 0 0-2.89-10.656a17.143 17.143 0 0 0-18.398-6.828a15.786 15.786 0 0 0-4.402 1.935l-71.67 45.674a14.898 14.898 0 0 0-6.73 9.975a15.9 15.9 0 0 0 2.709 12.012a17.156 17.156 0 0 0 18.404 6.832a15.841 15.841 0 0 0 4.402-1.935l27.345-17.427a52.147 52.147 0 0 1 14.552-6.397c23.101-6.006 47.497 3.037 61.102 22.65a52.681 52.681 0 0 1 9.003 39.848a49.453 49.453 0 0 1-22.34 33.12l-71.664 45.673a52.218 52.218 0 0 1-14.563 6.398"></path></svg>
-29
src/lexicons/com/atproto/sync/getRepo.defs.ts
··· 1 - /* 2 - * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT. 3 - */ 4 - 5 - import { l } from '@atproto/lex' 6 - 7 - const $nsid = 'com.atproto.sync.getRepo' 8 - 9 - export { $nsid } 10 - 11 - /** Download a repository export as CAR file. Optionally only a 'diff' since a previous revision. Does not require auth; implemented by PDS. */ 12 - const main = l.query( 13 - $nsid, 14 - l.params({ 15 - did: l.string({ format: 'did' }), 16 - since: l.optional(l.string({ format: 'tid' })), 17 - }), 18 - l.payload('application/vnd.ipld.car'), 19 - ['RepoNotFound', 'RepoTakendown', 'RepoSuspended', 'RepoDeactivated'], 20 - ) 21 - export { main } 22 - 23 - export type Params = l.InferMethodParams<typeof main> 24 - export type Output = l.InferMethodOutput<typeof main> 25 - export type OutputBody = l.InferMethodOutputBody<typeof main> 26 - 27 - export const $lxm = main.nsid, 28 - $params = main.parameters, 29 - $output = main.output
-6
src/lexicons/com/atproto/sync/getRepo.ts
··· 1 - /* 2 - * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT. 3 - */ 4 - 5 - export * from './getRepo.defs.js' 6 - export * as $defs from './getRepo.defs.js'
-5
src/lexicons/com/atproto/sync.ts
··· 1 - /* 2 - * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT. 3 - */ 4 - 5 - export * as getRepo from './sync/getRepo.js'
-5
src/lexicons/com/atproto.ts
··· 1 - /* 2 - * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT. 3 - */ 4 - 5 - export * as sync from './atproto/sync.js'
-5
src/lexicons/com.ts
··· 1 - /* 2 - * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT. 3 - */ 4 - 5 - export * as atproto from './com/atproto.js'
+267 -31
src/lib/RepoStats.svelte
··· 1 1 <script lang="ts"> 2 - const { did, pdsUrl } = $props(); 3 - let loading = $state(true) 4 - let downloadedBytes = $state(0) 5 - let downloadedMB = $derived((downloadedBytes / (1024 * 1024)).toFixed(2)) 6 - let error: string | null = $state(null) 2 + import { onMount } from 'svelte'; 3 + import { Client, simpleFetchHandler } from '@atcute/client'; 4 + import type {} from '@atcute/atproto'; 5 + import { fromStream } from '@atcute/repo'; 6 + 7 + const { did, handle, pdsUrl, slowPokeMode } = $props(); 8 + 9 + interface CountedCollection { 10 + collection: string; 11 + count: number; 12 + } 13 + 14 + //Shared State 15 + let loading = $state(true); 16 + let error: string | null = $state(null); 17 + //Download info stuff 18 + let downloadedBytes = $state(0); 19 + let downloadedMB = $derived((downloadedBytes / (1024 * 1024)).toFixed(2)); 20 + //Ui counts for collections 21 + let collections = $state(new Array<CountedCollection>()); 22 + let collectionsOrdered: Array<CountedCollection> = $derived([...collections].sort((a, b) => b.count - a.count)); 23 + let totalRecords = $state(0); 24 + let currentCollection: string | null = $state(null); 25 + //Timer stuff 26 + let startTime = $state<number | null>(null); 27 + let endTime = $state<number | null>(null); 28 + let elapsedTime = $state(''); 29 + let interval = $state<number | null>(null); 30 + //Just for the slow pokes 31 + let webCalls = $state(0); 32 + 33 + const calculateElapsedTime = () => { 34 + if (!startTime) return '0.00'; 35 + const end = endTime ?? Date.now(); 36 + elapsedTime = ((end - startTime) / 1000).toFixed(2); 37 + }; 7 38 39 + const startTimer = () => { 40 + endTime = null; 41 + startTime = Date.now(); 42 + interval = setInterval(() => { 43 + calculateElapsedTime(); 44 + }, 250); 45 + }; 8 46 9 - const getRepoStats = async () => { 10 - const endPoint = `${pdsUrl}/xrpc/com.atproto.sync.getRepo?did=${did}` 47 + const stopTimer = () => { 48 + if (interval) { 49 + clearInterval(interval); 50 + } 51 + endTime = Date.now(); 52 + calculateElapsedTime(); 53 + }; 11 54 55 + // Calls the getRepo endpoint to get a .car export to walk the repo. allows you to stream and access records as they are downloaded 56 + const getRepoStatsViaExport = async () => { 57 + const rpc = new Client({ handler: simpleFetchHandler({ service: pdsUrl }) }); 58 + startTimer(); 12 59 try { 13 - const response = await fetch(endPoint) 14 - if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`) 60 + const result = await rpc.get('com.atproto.sync.getRepo', { 61 + params: { did: did }, 62 + as: 'stream', 63 + }); 15 64 16 - const reader = response.body?.getReader() 17 - if (!reader) throw new Error('ReadableStream not supported') 65 + if (!result.ok) { 66 + throw new Error(`HTTP error! status: ${result.status}`); 67 + } 68 + const repo = fromStream(result.data); 18 69 19 - while (true) { 20 - const { done, value } = await reader.read() 21 - if (done) break 22 - downloadedBytes += value.length 70 + try { 71 + //This reads the repo as it is downloaded. which was very cool and I didn't know it would do that 72 + for await (const entry of repo) { 73 + // record here is the content of the atproto record 74 + // console.log(entry.record); 75 + let checkForCollection = collections.find(c => c.collection === entry.collection); 76 + if (!checkForCollection) { 77 + collections.push({ collection: entry.collection, count: 1 }); 78 + } else { 79 + checkForCollection.count++; 80 + } 81 + downloadedBytes = entry.carEntry.entryEnd; 82 + totalRecords++; 83 + } 84 + } finally { 85 + stopTimer(); 23 86 } 24 - loading = false 87 + loading = false; 25 88 } catch (err) { 26 - console.error('Error fetching repo stats:', error) 27 - error = err.message 28 - loading = false 89 + stopTimer(); 90 + console.log(err); 91 + console.error('Error fetching repo stats:', err); 92 + if (err instanceof Error) { 93 + error = err.message; 94 + } else { 95 + error = 'Unknown error: can check the console for more details'; 96 + } 97 + loading = false; 29 98 } 30 - } 99 + }; 31 100 32 - $effect(() => { 33 - getRepoStats() 34 - }) 101 + //An ungodly amount of api calls showing the speed difference between getting an export and walking the repo 102 + //via api calls 103 + const getRepoStatsTheLongWay = async () => { 104 + try { 105 + const rpc = new Client({ handler: simpleFetchHandler({ service: pdsUrl }) }); 106 + startTimer(); 107 + //We can make a call to get a list of collections in the repo 108 + let describeRepo = await rpc.get('com.atproto.repo.describeRepo', { 109 + params: { 110 + repo: did 111 + } 112 + }); 113 + if(!describeRepo.ok){ 114 + throw new Error(`HTTP error! status: ${describeRepo.status}`); 115 + } 116 + webCalls++; 117 + //We go through each collection and get a list of records in it 118 + for (const collection of describeRepo.data.collections) { 119 + let totalRecordsInCollection = 0; 120 + currentCollection = collection; 121 + //Do the first call to get a cursor 122 + const firstCollectionList = await rpc.get('com.atproto.repo.listRecords', { 123 + params: { 124 + collection, 125 + repo: did, 126 + limit: 100, 127 + } 128 + }); 129 + webCalls++; 130 + if(!firstCollectionList.ok){ 131 + console.error(`HTTP error! status: ${firstCollectionList.status}`); 132 + continue; 133 + } 134 + totalRecords += firstCollectionList.data.records.length; 135 + totalRecordsInCollection += firstCollectionList.data.records.length; 136 + 137 + let cursor = firstCollectionList.data.cursor; 138 + //Walk the collection till the cursor is undefined meaning no more records 139 + do { 140 + const nextCollectionList = await rpc.get('com.atproto.repo.listRecords', { 141 + params: { 142 + collection, 143 + repo: did, 144 + limit: 100, 145 + cursor 146 + } 147 + }); 148 + webCalls++; 149 + if(!nextCollectionList.ok){ 150 + console.error(`HTTP error! status: ${nextCollectionList.status}`); 151 + continue; 152 + } 153 + totalRecordsInCollection += nextCollectionList.data.records.length; 154 + cursor = nextCollectionList.data.cursor; 155 + totalRecords += nextCollectionList.data.records.length; 156 + 157 + } while (cursor !== undefined); 158 + collections.push({ collection: collection, count:totalRecordsInCollection }); 159 + } 160 + loading = false; 161 + stopTimer(); 162 + } 163 + catch (err) { 164 + loading = false; 165 + stopTimer(); 166 + console.error('Error fetching repo stats:', err); 167 + if (err instanceof Error) { 168 + error = err.message; 169 + } else { 170 + error = 'Unknown error: can check the console for more details'; 171 + } 172 + } 173 + }; 174 + 175 + onMount(() => { 176 + if (slowPokeMode) { 177 + getRepoStatsTheLongWay(); 178 + } else { 179 + getRepoStatsViaExport(); 180 + } 181 + 182 + }); 35 183 36 184 </script> 37 185 38 - <div> 186 + <div class="flex flex-col items-center gap-4"> 187 + <div class="w-full flex justify-center"> 188 + {#if slowPokeMode} 189 + <img 190 + alt="A Shellder biting a Slowpoke's tail, as seen in the Pokรฉmon anime" 191 + src="/slowPoke.png" 192 + class="max-w-sm rounded-lg shadow-lg" 193 + > 194 + {:else} 195 + <img 196 + alt="text in a speech bubble that says 'Dude, wheres my car'" 197 + src="/dude.png" 198 + class="max-w-sm rounded-lg shadow-lg" 199 + > 200 + {/if} 201 + </div> 202 + 39 203 {#if error} 40 - <p style="color: red">{error}</p> 204 + <div class="alert alert-error w-full"> 205 + <svg xmlns="http://www.w3.org/2000/svg" class="stroke-current shrink-0 h-6 w-6" fill="none" viewBox="0 0 24 24"> 206 + <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" /> 207 + </svg> 208 + <span>{error}</span> 209 + </div> 210 + {/if} 211 + 212 + {#if loading && !slowPokeMode} 213 + <div class="flex items-center gap-3"> 214 + <span class="loading loading-spinner loading-lg text-primary"></span> 215 + <div class="text-lg"> 216 + <div class="font-semibold">Loading...</div> 217 + <div class="text-sm opacity-70"> 218 + <span class="badge badge-info">{downloadedMB} MB</span> downloaded in 219 + <span class="badge badge-ghost">{elapsedTime}s</span> 220 + </div> 221 + </div> 222 + </div> 223 + {:else if loading && slowPokeMode} 224 + <div class="flex items-center gap-3"> 225 + <span class="loading loading-spinner loading-lg text-primary"></span> 226 + <div class="text-lg"> 227 + <div class="font-semibold">Loading...</div> 228 + <div class="text-sm opacity-70"> 229 + <span class="badge badge-info">{webCalls.toLocaleString()} web calls</span> made in 230 + <span class="badge badge-ghost">{elapsedTime}s</span> 231 + </div> 232 + </div> 233 + </div> 234 + {:else} 235 + <div class="stats shadow bg-base-300"> 236 + <div class="stat"> 237 + <div class="stat-title">{slowPokeMode ? 'Web Calls Made' : 'Repo Size'}</div> 238 + <div class="stat-value text-primary"> 239 + {#if !slowPokeMode} 240 + {downloadedMB} MB 241 + {:else} 242 + {webCalls.toLocaleString()} 243 + {/if} 244 + </div> 245 + <div class="stat-desc">Fetched in {elapsedTime}s</div> 246 + </div> 247 + </div> 41 248 {/if} 42 - {#if loading} 43 - Loading... ({downloadedMB} MB downloaded) 44 - {:else } 45 - <ol> 46 - <li>Total downloaded: {downloadedMB} MB</li> 47 - </ol> 249 + 250 + {#if loading && currentCollection !== null} 251 + <div class="alert alert-info"> 252 + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="stroke-current shrink-0 w-6 h-6"> 253 + <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path> 254 + </svg> 255 + <span>Currently walking collection: <strong>{currentCollection}</strong></span> 256 + </div> 257 + {/if} 258 + 259 + {#if collectionsOrdered.length > 0} 260 + <div class="stats stats-vertical lg:stats-horizontal shadow bg-base-300 w-full"> 261 + <div class="stat"> 262 + <div class="stat-title">Total Records</div> 263 + <div class="stat-value text-secondary">{totalRecords.toLocaleString()}</div> 264 + </div> 265 + <div class="stat"> 266 + <div class="stat-title">Different Collections</div> 267 + <div class="stat-value text-accent">{collectionsOrdered.length}</div> 268 + </div> 269 + </div> 270 + 271 + <div class="card bg-base-300 shadow-xl w-full"> 272 + <div class="card-body"> 273 + <h3 class="card-title">{handle}'s Collections Breakdown</h3> 274 + <ol class="list-decimal list-inside space-y-2"> 275 + {#each collectionsOrdered as collection (collection.collection)} 276 + <li class="text-sm"> 277 + <a class="link font-mono text-primary" href="https://pdsls.dev/at://{did}/{collection.collection}" target="_blank">{collection.collection}</a> 278 + <span class="badge badge-sm ml-2">{collection.count.toLocaleString()} records</span> 279 + </li> 280 + {/each} 281 + </ol> 282 + </div> 283 + </div> 48 284 {/if} 49 285 </div>
+79 -38
src/lib/SearchForm.svelte
··· 1 1 <script lang="ts"> 2 - import { AtprotoDohHandleResolver} from "@atproto-labs/handle-resolver"; 3 - import { DidResolver } from "@atproto/identity" 2 + import { 3 + CompositeHandleResolver, 4 + DohJsonHandleResolver, 5 + WellKnownHandleResolver, 6 + CompositeDidDocumentResolver, 7 + PlcDidDocumentResolver, 8 + WebDidDocumentResolver, 9 + } from '@atcute/identity-resolver'; 10 + import { isHandle } from '@atcute/lexicons/syntax'; 11 + import { getPdsEndpoint } from '@atcute/identity'; 4 12 5 - const didResolver = new DidResolver({}) 6 - const handleResolver = new AtprotoDohHandleResolver({ dohEndpoint: 'https://cloudflare-dns.com/dns-query'}); 7 13 8 - let handleToLookUp = $state(''); 9 - let error: string | null = $state(null); 14 + const handleResolver = new CompositeHandleResolver({ 15 + methods: { 16 + dns: new DohJsonHandleResolver({ dohUrl: 'https://cloudflare-dns.com/dns-query' }), 17 + http: new WellKnownHandleResolver(), 18 + }, 19 + }); 20 + 21 + 22 + const didResolver = new CompositeDidDocumentResolver({ 23 + methods: { 24 + plc: new PlcDidDocumentResolver(), 25 + web: new WebDidDocumentResolver(), 26 + }, 27 + }); 10 28 11 - let { resolvedResult } = $props(); 29 + let handleToLookUp = $state(''); 30 + let error: string | null = $state(null); 31 + let slowpoke = $state(false); 12 32 33 + let { resolvedResult } = $props(); 13 34 14 - const searchForUser = async (event: Event) => { 15 - event.preventDefault(); 16 - error = null; 17 35 18 - let did = await handleResolver.resolve(handleToLookUp) 19 - if (did === null) { 20 - error = 'No result found'; 21 - return; 22 - } 36 + const searchForUser = async (event: Event) => { 37 + event.preventDefault(); 38 + error = null; 39 + try { 40 + let handle = handleToLookUp.replace(/^@/, '').toLowerCase(); 41 + if (!isHandle(handle)) { 42 + error = 'Not a valid handle'; 43 + return; 44 + } 45 + let did = await handleResolver.resolve(handle); 23 46 24 - const didDoc = await didResolver.resolve(did); 25 - if (!didDoc){ 26 - error = 'No did doc found'; 27 - return 28 - } 29 - if (!didDoc.service){ 30 - error = 'No services?'; 31 - return 32 - } 33 - const pds = didDoc?.service?.find(s => s.id === '#atproto_pds') 34 - if (!pds){ 35 - error = 'No pds service found????'; 36 - return 37 - } 38 - const pdsUrl = pds.serviceEndpoint; 39 - resolvedResult(did, pdsUrl) 40 - } 47 + const didDoc = await didResolver.resolve(did); 48 + const pdsUrl = getPdsEndpoint(didDoc); 41 49 50 + resolvedResult(did, handle, pdsUrl, slowpoke); 51 + }catch(e){ 52 + if (e instanceof Error) { 53 + error = e.message; 54 + } 55 + } 56 + }; 42 57 43 58 44 59 </script> 45 60 46 - <form onsubmit={searchForUser}> 47 - <label for="search">ATProto Handle</label> 48 - <input bind:value={handleToLookUp} id="search" type="text" placeholder="alice.bsky.social"/> 49 - <button>Lookup</button> 50 - <br> 61 + <form onsubmit={searchForUser} class="space-y-4"> 62 + <fieldset class="fieldset w-full"> 63 + <label class="label" for="search">ATProto Handle</label> 64 + <input 65 + bind:value={handleToLookUp} 66 + id="search" 67 + type="text" 68 + placeholder="alice.bsky.social" 69 + class="input input-bordered w-full" 70 + /> 71 + </fieldset> 72 + 73 + <fieldset class="fieldset bg-base-100 border-base-300 rounded-box w-64 border p-4"> 74 + <legend class="fieldset-legend">Slow Poke</legend> 75 + <label class="label"> 76 + <input type="checkbox" bind:checked={slowpoke} class="toggle" /> 77 + uses web calls to walk the repo to show you the speed difference 78 + </label> 79 + </fieldset> 80 + 51 81 {#if error} 52 - <p style="color: red;">Error: {error}</p> 82 + <div class="alert alert-error"> 83 + <svg xmlns="http://www.w3.org/2000/svg" class="stroke-current shrink-0 h-6 w-6" fill="none" viewBox="0 0 24 24"> 84 + <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" /> 85 + </svg> 86 + <span>Error: {error}</span> 87 + </div> 53 88 {/if} 89 + 90 + <div class="form-control mt-6"> 91 + <button class="btn btn-primary"> 92 + Walk by {slowpoke ? 'API Calls' : 'Repo Export'} 93 + </button> 94 + </div> 54 95 </form>
+5 -5
src/main.ts
··· 1 - import { mount } from 'svelte' 2 - import './app.css' 3 - import App from './App.svelte' 1 + import { mount } from 'svelte'; 2 + import './app.css'; 3 + import App from './App.svelte'; 4 4 5 5 const app = mount(App, { 6 6 target: document.getElementById('app')!, 7 - }) 7 + }); 8 8 9 - export default app 9 + export default app;
+2 -2
svelte.config.js
··· 1 - import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' 1 + import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 2 2 3 3 /** @type {import("@sveltejs/vite-plugin-svelte").SvelteConfig} */ 4 4 export default { 5 5 // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 6 6 // for more information about preprocessors 7 7 preprocess: vitePreprocess(), 8 - } 8 + };
+2 -2
tsconfig.app.json
··· 5 5 "target": "ES2022", 6 6 "useDefineForClassFields": true, 7 7 "module": "ESNext", 8 - "types": ["svelte", "vite/client"], 8 + "types": ["svelte", "vite/client", "@atcute/bluesky"], 9 9 "noEmit": true, 10 10 /** 11 11 * Typecheck JS in `.svelte` and `.js` files by default. ··· 15 15 */ 16 16 "allowJs": true, 17 17 "checkJs": true, 18 - "moduleDetection": "force" 18 + "moduleDetection": "force", 19 19 }, 20 20 "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"] 21 21 }
+1 -1
tsconfig.node.json
··· 4 4 "target": "ES2023", 5 5 "lib": ["ES2023"], 6 6 "module": "ESNext", 7 - "types": ["node"], 7 + "types": ["node", "@atcute/bluesky"], 8 8 "skipLibCheck": true, 9 9 10 10 /* Bundler mode */
+8 -4
vite.config.ts
··· 1 - import { defineConfig } from 'vite' 2 - import { svelte } from '@sveltejs/vite-plugin-svelte' 1 + import { defineConfig } from 'vite'; 2 + import { svelte } from '@sveltejs/vite-plugin-svelte'; 3 + import tailwindcss from '@tailwindcss/vite' 3 4 4 5 // https://vite.dev/config/ 5 6 export default defineConfig({ 6 - plugins: [svelte()], 7 - }) 7 + plugins: [ 8 + svelte(), 9 + tailwindcss(), 10 + ], 11 + });