simple atproto oauth for static svelte apps flo-bit.dev/svelte-atproto-client-oauth/

first commit

Florian 8046a54d

+4480
+50
.github/workflows/deploy_gh_pages.yml
···
··· 1 + name: Deploy to GitHub Pages 2 + 3 + on: 4 + push: 5 + branches: 6 + - main 7 + 8 + jobs: 9 + build_site: 10 + runs-on: ubuntu-latest 11 + steps: 12 + - name: Checkout 13 + uses: actions/checkout@v4 14 + 15 + - name: Install Node.js 16 + uses: actions/setup-node@v4 17 + with: 18 + node-version: 18 19 + cache: npm 20 + 21 + - name: Install dependencies 22 + run: npm ci 23 + 24 + - name: build 25 + env: 26 + BASE_PATH: '/${{ github.event.repository.name }}' 27 + run: | 28 + npm run build 29 + 30 + - name: Upload Artifacts 31 + uses: actions/upload-pages-artifact@v3 32 + with: 33 + path: 'build/' 34 + 35 + deploy: 36 + needs: build_site 37 + runs-on: ubuntu-latest 38 + 39 + permissions: 40 + pages: write 41 + id-token: write 42 + 43 + environment: 44 + name: github-pages 45 + url: ${{ steps.deployment.outputs.page_url }} 46 + 47 + steps: 48 + - name: Deploy 49 + id: deployment 50 + uses: actions/deploy-pages@v4
+23
.gitignore
···
··· 1 + node_modules 2 + 3 + # Output 4 + .output 5 + .vercel 6 + .netlify 7 + .wrangler 8 + /.svelte-kit 9 + /build 10 + 11 + # OS 12 + .DS_Store 13 + Thumbs.db 14 + 15 + # Env 16 + .env 17 + .env.* 18 + !.env.example 19 + !.env.test 20 + 21 + # Vite 22 + vite.config.js.timestamp-* 23 + vite.config.ts.timestamp-*
+1
.npmrc
···
··· 1 + engine-strict=true
+4
.prettierignore
···
··· 1 + # Package Managers 2 + package-lock.json 3 + pnpm-lock.yaml 4 + yarn.lock
+15
.prettierrc
···
··· 1 + { 2 + "useTabs": true, 3 + "singleQuote": true, 4 + "trailingComma": "none", 5 + "printWidth": 100, 6 + "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], 7 + "overrides": [ 8 + { 9 + "files": "*.svelte", 10 + "options": { 11 + "parser": "svelte" 12 + } 13 + } 14 + ] 15 + }
+38
README.md
···
··· 1 + # sv 2 + 3 + Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). 4 + 5 + ## Creating a project 6 + 7 + If you're seeing this, you've probably already done this step. Congrats! 8 + 9 + ```bash 10 + # create a new project in the current directory 11 + npx sv create 12 + 13 + # create a new project in my-app 14 + npx sv create my-app 15 + ``` 16 + 17 + ## Developing 18 + 19 + Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 20 + 21 + ```bash 22 + npm run dev 23 + 24 + # or start the server and open the app in a new browser tab 25 + npm run dev -- --open 26 + ``` 27 + 28 + ## Building 29 + 30 + To create a production version of your app: 31 + 32 + ```bash 33 + npm run build 34 + ``` 35 + 36 + You can preview the production build with `npm run preview`. 37 + 38 + > To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
+34
eslint.config.js
···
··· 1 + import prettier from 'eslint-config-prettier'; 2 + import js from '@eslint/js'; 3 + import { includeIgnoreFile } from '@eslint/compat'; 4 + import svelte from 'eslint-plugin-svelte'; 5 + import globals from 'globals'; 6 + import { fileURLToPath } from 'node:url'; 7 + import ts from 'typescript-eslint'; 8 + const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); 9 + 10 + export default ts.config( 11 + includeIgnoreFile(gitignorePath), 12 + js.configs.recommended, 13 + ...ts.configs.recommended, 14 + ...svelte.configs['flat/recommended'], 15 + prettier, 16 + ...svelte.configs['flat/prettier'], 17 + { 18 + languageOptions: { 19 + globals: { 20 + ...globals.browser, 21 + ...globals.node 22 + } 23 + } 24 + }, 25 + { 26 + files: ['**/*.svelte'], 27 + 28 + languageOptions: { 29 + parserOptions: { 30 + parser: ts.parser 31 + } 32 + } 33 + } 34 + );
+3884
package-lock.json
···
··· 1 + { 2 + "name": "svelte-atproto-client-oauth", 3 + "version": "0.0.1", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "svelte-atproto-client-oauth", 9 + "version": "0.0.1", 10 + "dependencies": { 11 + "@atproto/api": "^0.14.4", 12 + "@atproto/oauth-client-browser": "^0.3.10", 13 + "@sveltejs/adapter-static": "^3.0.8", 14 + "@tailwindcss/forms": "^0.5.10" 15 + }, 16 + "devDependencies": { 17 + "@eslint/compat": "^1.2.5", 18 + "@eslint/js": "^9.18.0", 19 + "@sveltejs/adapter-auto": "^4.0.0", 20 + "@sveltejs/kit": "^2.16.0", 21 + "@sveltejs/vite-plugin-svelte": "^5.0.0", 22 + "@tailwindcss/vite": "^4.0.0", 23 + "eslint": "^9.18.0", 24 + "eslint-config-prettier": "^10.0.1", 25 + "eslint-plugin-svelte": "^2.46.1", 26 + "globals": "^15.14.0", 27 + "prettier": "^3.4.2", 28 + "prettier-plugin-svelte": "^3.3.3", 29 + "prettier-plugin-tailwindcss": "^0.6.11", 30 + "svelte": "^5.0.0", 31 + "svelte-check": "^4.0.0", 32 + "tailwindcss": "^4.0.0", 33 + "typescript": "^5.0.0", 34 + "typescript-eslint": "^8.20.0", 35 + "vite": "^6.0.0" 36 + } 37 + }, 38 + "node_modules/@ampproject/remapping": { 39 + "version": "2.3.0", 40 + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 41 + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 42 + "dependencies": { 43 + "@jridgewell/gen-mapping": "^0.3.5", 44 + "@jridgewell/trace-mapping": "^0.3.24" 45 + }, 46 + "engines": { 47 + "node": ">=6.0.0" 48 + } 49 + }, 50 + "node_modules/@atproto-labs/did-resolver": { 51 + "version": "0.1.10", 52 + "resolved": "https://registry.npmjs.org/@atproto-labs/did-resolver/-/did-resolver-0.1.10.tgz", 53 + "integrity": "sha512-o/bl5acf3AIPKZuO6Fd5EmO4INGpi/3Pm08ZpHNCy7s4VZXFmAjZaHeCD7hQ8yEL0EtXnLNIECtKrTBTTx8b+A==", 54 + "dependencies": { 55 + "@atproto-labs/fetch": "0.2.1", 56 + "@atproto-labs/pipe": "0.1.0", 57 + "@atproto-labs/simple-store": "0.1.2", 58 + "@atproto-labs/simple-store-memory": "0.1.2", 59 + "@atproto/did": "0.1.5", 60 + "zod": "^3.23.8" 61 + } 62 + }, 63 + "node_modules/@atproto-labs/fetch": { 64 + "version": "0.2.1", 65 + "resolved": "https://registry.npmjs.org/@atproto-labs/fetch/-/fetch-0.2.1.tgz", 66 + "integrity": "sha512-V22/7C7r+FfIDZA/BVn5UeuK5JccDp7nOiRfp5JITpVw2OXQbVfd8kywN7voWvPXw4sjd4cHoIPgQa0wvQGenQ==", 67 + "dependencies": { 68 + "@atproto-labs/pipe": "0.1.0" 69 + }, 70 + "optionalDependencies": { 71 + "zod": "^3.23.8" 72 + } 73 + }, 74 + "node_modules/@atproto-labs/handle-resolver": { 75 + "version": "0.1.7", 76 + "resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver/-/handle-resolver-0.1.7.tgz", 77 + "integrity": "sha512-nb4uAOgRVMp2NGVTJnor4ohqySbd1KyB5VzQLaRjMaPwH60Al057eTqiKRbeH/xD7hOBPNj1m0YjgxzvyAnWkg==", 78 + "dependencies": { 79 + "@atproto-labs/simple-store": "0.1.2", 80 + "@atproto-labs/simple-store-memory": "0.1.2", 81 + "@atproto/did": "0.1.5", 82 + "zod": "^3.23.8" 83 + } 84 + }, 85 + "node_modules/@atproto-labs/identity-resolver": { 86 + "version": "0.1.13", 87 + "resolved": "https://registry.npmjs.org/@atproto-labs/identity-resolver/-/identity-resolver-0.1.13.tgz", 88 + "integrity": "sha512-I+l0JZnpg2HeLKSibqeZxDrGdHTNc5tAOuEBUmJntqD4RH2+sEFpsU1ZMWDX09lkL2ZVtuzvRPJKeWk1kJLkEA==", 89 + "dependencies": { 90 + "@atproto-labs/did-resolver": "0.1.10", 91 + "@atproto-labs/handle-resolver": "0.1.7", 92 + "@atproto/syntax": "0.3.3" 93 + } 94 + }, 95 + "node_modules/@atproto-labs/pipe": { 96 + "version": "0.1.0", 97 + "resolved": "https://registry.npmjs.org/@atproto-labs/pipe/-/pipe-0.1.0.tgz", 98 + "integrity": "sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w==" 99 + }, 100 + "node_modules/@atproto-labs/simple-store": { 101 + "version": "0.1.2", 102 + "resolved": "https://registry.npmjs.org/@atproto-labs/simple-store/-/simple-store-0.1.2.tgz", 103 + "integrity": "sha512-9vTNvyPPBs44tKVFht16wGlilW8u4wpEtKwLkWbuNEh3h9TTQ8zjVhEoGZh/v73G4Otr9JUOSIq+/5+8OZD2mQ==" 104 + }, 105 + "node_modules/@atproto-labs/simple-store-memory": { 106 + "version": "0.1.2", 107 + "resolved": "https://registry.npmjs.org/@atproto-labs/simple-store-memory/-/simple-store-memory-0.1.2.tgz", 108 + "integrity": "sha512-q6wawjKKXuhUzr2MnkSlgr6zU6VimYkL8eNvLQvkroLnIDyMkoCKO4+EJ885ZD8lGwBo4pX9Lhrg9JJ+ncJI8g==", 109 + "dependencies": { 110 + "@atproto-labs/simple-store": "0.1.2", 111 + "lru-cache": "^10.2.0" 112 + } 113 + }, 114 + "node_modules/@atproto/api": { 115 + "version": "0.14.4", 116 + "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.14.4.tgz", 117 + "integrity": "sha512-R/9xmAs8noZK//wmCoHow99Eg1g5J9y36IYmrU3aRApa0JkSVOfoCwwY42gN+LXDGSY1hP50hyRe8ftUVUMFkA==", 118 + "dependencies": { 119 + "@atproto/common-web": "^0.4.0", 120 + "@atproto/lexicon": "^0.4.7", 121 + "@atproto/syntax": "^0.3.3", 122 + "@atproto/xrpc": "^0.6.9", 123 + "await-lock": "^2.2.2", 124 + "multiformats": "^9.9.0", 125 + "tlds": "^1.234.0", 126 + "zod": "^3.23.8" 127 + } 128 + }, 129 + "node_modules/@atproto/common-web": { 130 + "version": "0.4.0", 131 + "resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.4.0.tgz", 132 + "integrity": "sha512-ZYL0P9myHybNgwh/hBY0HaBzqiLR1B5/ie5bJpLQAg0whRzNA28t8/nU2vh99tbsWcAF0LOD29M8++LyENJLNQ==", 133 + "dependencies": { 134 + "graphemer": "^1.4.0", 135 + "multiformats": "^9.9.0", 136 + "uint8arrays": "3.0.0", 137 + "zod": "^3.23.8" 138 + } 139 + }, 140 + "node_modules/@atproto/did": { 141 + "version": "0.1.5", 142 + "resolved": "https://registry.npmjs.org/@atproto/did/-/did-0.1.5.tgz", 143 + "integrity": "sha512-8+1D08QdGE5TF0bB0vV8HLVrVZJeLNITpRTUVEoABNMRaUS7CoYSVb0+JNQDeJIVmqMjOL8dOjvCUDkp3gEaGQ==", 144 + "dependencies": { 145 + "zod": "^3.23.8" 146 + } 147 + }, 148 + "node_modules/@atproto/jwk": { 149 + "version": "0.1.3", 150 + "resolved": "https://registry.npmjs.org/@atproto/jwk/-/jwk-0.1.3.tgz", 151 + "integrity": "sha512-5rBgA8Fk4fg6MfNyEQvUnwq1MRn5xZOXYj4oxLuZ549XeNp2Rm2v+psuEkICD+o6pfIoMX4Hw7UTlXDrpsKKlQ==", 152 + "dependencies": { 153 + "multiformats": "^9.9.0", 154 + "zod": "^3.23.8" 155 + } 156 + }, 157 + "node_modules/@atproto/jwk-jose": { 158 + "version": "0.1.4", 159 + "resolved": "https://registry.npmjs.org/@atproto/jwk-jose/-/jwk-jose-0.1.4.tgz", 160 + "integrity": "sha512-JzLn1wUzuLfweznSECdTjSHTxQBEz7Q8oJ4XKjRNludqzyJW8etEH00l1WolLipFxoj1QCG9qy00JmlC59Y6Rw==", 161 + "dependencies": { 162 + "@atproto/jwk": "0.1.3", 163 + "jose": "^5.2.0" 164 + } 165 + }, 166 + "node_modules/@atproto/jwk-webcrypto": { 167 + "version": "0.1.4", 168 + "resolved": "https://registry.npmjs.org/@atproto/jwk-webcrypto/-/jwk-webcrypto-0.1.4.tgz", 169 + "integrity": "sha512-eTio2VQj8y4wE6Ywq4QtPyHI8gabPu/UGkjAKhBoGXdxkP3KnCkl6jzhXWgFB20UwYvZVawOjbo5WE7izPsIwQ==", 170 + "dependencies": { 171 + "@atproto/jwk": "0.1.3", 172 + "@atproto/jwk-jose": "0.1.4", 173 + "zod": "^3.23.8" 174 + } 175 + }, 176 + "node_modules/@atproto/lexicon": { 177 + "version": "0.4.7", 178 + "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.4.7.tgz", 179 + "integrity": "sha512-/x6h3tAiDNzSi4eXtC8ke65B7UzsagtlGRHmUD95698x5lBRpDnpizj0fZWTZVYed5qnOmz/ZEue+v3wDmO61g==", 180 + "dependencies": { 181 + "@atproto/common-web": "^0.4.0", 182 + "@atproto/syntax": "^0.3.3", 183 + "iso-datestring-validator": "^2.2.2", 184 + "multiformats": "^9.9.0", 185 + "zod": "^3.23.8" 186 + } 187 + }, 188 + "node_modules/@atproto/oauth-client": { 189 + "version": "0.3.10", 190 + "resolved": "https://registry.npmjs.org/@atproto/oauth-client/-/oauth-client-0.3.10.tgz", 191 + "integrity": "sha512-elCj9FirkUijhaY6nP2ICv1FYNTh6fW2Lr7N9j18gBHYfI9Vr77loKkF4ArgJnNZKYA+rUu8V83O71KG9UyEJg==", 192 + "dependencies": { 193 + "@atproto-labs/did-resolver": "0.1.10", 194 + "@atproto-labs/fetch": "0.2.1", 195 + "@atproto-labs/handle-resolver": "0.1.7", 196 + "@atproto-labs/identity-resolver": "0.1.13", 197 + "@atproto-labs/simple-store": "0.1.2", 198 + "@atproto-labs/simple-store-memory": "0.1.2", 199 + "@atproto/did": "0.1.5", 200 + "@atproto/jwk": "0.1.3", 201 + "@atproto/oauth-types": "0.2.3", 202 + "@atproto/xrpc": "0.6.9", 203 + "multiformats": "^9.9.0", 204 + "zod": "^3.23.8" 205 + } 206 + }, 207 + "node_modules/@atproto/oauth-client-browser": { 208 + "version": "0.3.10", 209 + "resolved": "https://registry.npmjs.org/@atproto/oauth-client-browser/-/oauth-client-browser-0.3.10.tgz", 210 + "integrity": "sha512-tQh8HZJ95Azo3sBJbDyTFjlSLyeU5I5ZzmcPGAELuzZ5U4eGc74HYkG5BiGe5+Aov9VFftn7tz3ScuiyIa+2Ng==", 211 + "dependencies": { 212 + "@atproto-labs/did-resolver": "0.1.10", 213 + "@atproto-labs/handle-resolver": "0.1.7", 214 + "@atproto-labs/simple-store": "0.1.2", 215 + "@atproto/did": "0.1.5", 216 + "@atproto/jwk": "0.1.3", 217 + "@atproto/jwk-webcrypto": "0.1.4", 218 + "@atproto/oauth-client": "0.3.10", 219 + "@atproto/oauth-types": "0.2.3" 220 + } 221 + }, 222 + "node_modules/@atproto/oauth-types": { 223 + "version": "0.2.3", 224 + "resolved": "https://registry.npmjs.org/@atproto/oauth-types/-/oauth-types-0.2.3.tgz", 225 + "integrity": "sha512-M+0WW/alS2BfhKtwvdU3rSaLoycw6kTH1kGKeyDdmb/xN/8QjU7T6dkJe+wX4NC7F23xdKfti9DZhBpEtn+/kg==", 226 + "dependencies": { 227 + "@atproto/jwk": "0.1.3", 228 + "zod": "^3.23.8" 229 + } 230 + }, 231 + "node_modules/@atproto/syntax": { 232 + "version": "0.3.3", 233 + "resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.3.3.tgz", 234 + "integrity": "sha512-F1LZweesNYdBbZBXVa72N/cSvchG8Q1tG4/209ZXbIuM3FwQtkgn+zgmmV4P4ORmhOeXPBNXvMBpcqiwx/gEQQ==" 235 + }, 236 + "node_modules/@atproto/xrpc": { 237 + "version": "0.6.9", 238 + "resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.6.9.tgz", 239 + "integrity": "sha512-vQGA7++DYMNaHx3C7vEjT+2X6hYYLG7JNbBnDLWu0km1/1KYXgRkAz4h+FfYqg1mvzvIorHU7DAs5wevkJDDlw==", 240 + "dependencies": { 241 + "@atproto/lexicon": "^0.4.7", 242 + "zod": "^3.23.8" 243 + } 244 + }, 245 + "node_modules/@esbuild/aix-ppc64": { 246 + "version": "0.24.2", 247 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", 248 + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", 249 + "cpu": [ 250 + "ppc64" 251 + ], 252 + "optional": true, 253 + "os": [ 254 + "aix" 255 + ], 256 + "engines": { 257 + "node": ">=18" 258 + } 259 + }, 260 + "node_modules/@esbuild/android-arm": { 261 + "version": "0.24.2", 262 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", 263 + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", 264 + "cpu": [ 265 + "arm" 266 + ], 267 + "optional": true, 268 + "os": [ 269 + "android" 270 + ], 271 + "engines": { 272 + "node": ">=18" 273 + } 274 + }, 275 + "node_modules/@esbuild/android-arm64": { 276 + "version": "0.24.2", 277 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", 278 + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", 279 + "cpu": [ 280 + "arm64" 281 + ], 282 + "optional": true, 283 + "os": [ 284 + "android" 285 + ], 286 + "engines": { 287 + "node": ">=18" 288 + } 289 + }, 290 + "node_modules/@esbuild/android-x64": { 291 + "version": "0.24.2", 292 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", 293 + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", 294 + "cpu": [ 295 + "x64" 296 + ], 297 + "optional": true, 298 + "os": [ 299 + "android" 300 + ], 301 + "engines": { 302 + "node": ">=18" 303 + } 304 + }, 305 + "node_modules/@esbuild/darwin-arm64": { 306 + "version": "0.24.2", 307 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", 308 + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", 309 + "cpu": [ 310 + "arm64" 311 + ], 312 + "optional": true, 313 + "os": [ 314 + "darwin" 315 + ], 316 + "engines": { 317 + "node": ">=18" 318 + } 319 + }, 320 + "node_modules/@esbuild/darwin-x64": { 321 + "version": "0.24.2", 322 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", 323 + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", 324 + "cpu": [ 325 + "x64" 326 + ], 327 + "optional": true, 328 + "os": [ 329 + "darwin" 330 + ], 331 + "engines": { 332 + "node": ">=18" 333 + } 334 + }, 335 + "node_modules/@esbuild/freebsd-arm64": { 336 + "version": "0.24.2", 337 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", 338 + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", 339 + "cpu": [ 340 + "arm64" 341 + ], 342 + "optional": true, 343 + "os": [ 344 + "freebsd" 345 + ], 346 + "engines": { 347 + "node": ">=18" 348 + } 349 + }, 350 + "node_modules/@esbuild/freebsd-x64": { 351 + "version": "0.24.2", 352 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", 353 + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", 354 + "cpu": [ 355 + "x64" 356 + ], 357 + "optional": true, 358 + "os": [ 359 + "freebsd" 360 + ], 361 + "engines": { 362 + "node": ">=18" 363 + } 364 + }, 365 + "node_modules/@esbuild/linux-arm": { 366 + "version": "0.24.2", 367 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", 368 + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", 369 + "cpu": [ 370 + "arm" 371 + ], 372 + "optional": true, 373 + "os": [ 374 + "linux" 375 + ], 376 + "engines": { 377 + "node": ">=18" 378 + } 379 + }, 380 + "node_modules/@esbuild/linux-arm64": { 381 + "version": "0.24.2", 382 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", 383 + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", 384 + "cpu": [ 385 + "arm64" 386 + ], 387 + "optional": true, 388 + "os": [ 389 + "linux" 390 + ], 391 + "engines": { 392 + "node": ">=18" 393 + } 394 + }, 395 + "node_modules/@esbuild/linux-ia32": { 396 + "version": "0.24.2", 397 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", 398 + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", 399 + "cpu": [ 400 + "ia32" 401 + ], 402 + "optional": true, 403 + "os": [ 404 + "linux" 405 + ], 406 + "engines": { 407 + "node": ">=18" 408 + } 409 + }, 410 + "node_modules/@esbuild/linux-loong64": { 411 + "version": "0.24.2", 412 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", 413 + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", 414 + "cpu": [ 415 + "loong64" 416 + ], 417 + "optional": true, 418 + "os": [ 419 + "linux" 420 + ], 421 + "engines": { 422 + "node": ">=18" 423 + } 424 + }, 425 + "node_modules/@esbuild/linux-mips64el": { 426 + "version": "0.24.2", 427 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", 428 + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", 429 + "cpu": [ 430 + "mips64el" 431 + ], 432 + "optional": true, 433 + "os": [ 434 + "linux" 435 + ], 436 + "engines": { 437 + "node": ">=18" 438 + } 439 + }, 440 + "node_modules/@esbuild/linux-ppc64": { 441 + "version": "0.24.2", 442 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", 443 + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", 444 + "cpu": [ 445 + "ppc64" 446 + ], 447 + "optional": true, 448 + "os": [ 449 + "linux" 450 + ], 451 + "engines": { 452 + "node": ">=18" 453 + } 454 + }, 455 + "node_modules/@esbuild/linux-riscv64": { 456 + "version": "0.24.2", 457 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", 458 + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", 459 + "cpu": [ 460 + "riscv64" 461 + ], 462 + "optional": true, 463 + "os": [ 464 + "linux" 465 + ], 466 + "engines": { 467 + "node": ">=18" 468 + } 469 + }, 470 + "node_modules/@esbuild/linux-s390x": { 471 + "version": "0.24.2", 472 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", 473 + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", 474 + "cpu": [ 475 + "s390x" 476 + ], 477 + "optional": true, 478 + "os": [ 479 + "linux" 480 + ], 481 + "engines": { 482 + "node": ">=18" 483 + } 484 + }, 485 + "node_modules/@esbuild/linux-x64": { 486 + "version": "0.24.2", 487 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", 488 + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", 489 + "cpu": [ 490 + "x64" 491 + ], 492 + "optional": true, 493 + "os": [ 494 + "linux" 495 + ], 496 + "engines": { 497 + "node": ">=18" 498 + } 499 + }, 500 + "node_modules/@esbuild/netbsd-arm64": { 501 + "version": "0.24.2", 502 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", 503 + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", 504 + "cpu": [ 505 + "arm64" 506 + ], 507 + "optional": true, 508 + "os": [ 509 + "netbsd" 510 + ], 511 + "engines": { 512 + "node": ">=18" 513 + } 514 + }, 515 + "node_modules/@esbuild/netbsd-x64": { 516 + "version": "0.24.2", 517 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", 518 + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", 519 + "cpu": [ 520 + "x64" 521 + ], 522 + "optional": true, 523 + "os": [ 524 + "netbsd" 525 + ], 526 + "engines": { 527 + "node": ">=18" 528 + } 529 + }, 530 + "node_modules/@esbuild/openbsd-arm64": { 531 + "version": "0.24.2", 532 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", 533 + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", 534 + "cpu": [ 535 + "arm64" 536 + ], 537 + "optional": true, 538 + "os": [ 539 + "openbsd" 540 + ], 541 + "engines": { 542 + "node": ">=18" 543 + } 544 + }, 545 + "node_modules/@esbuild/openbsd-x64": { 546 + "version": "0.24.2", 547 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", 548 + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", 549 + "cpu": [ 550 + "x64" 551 + ], 552 + "optional": true, 553 + "os": [ 554 + "openbsd" 555 + ], 556 + "engines": { 557 + "node": ">=18" 558 + } 559 + }, 560 + "node_modules/@esbuild/sunos-x64": { 561 + "version": "0.24.2", 562 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", 563 + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", 564 + "cpu": [ 565 + "x64" 566 + ], 567 + "optional": true, 568 + "os": [ 569 + "sunos" 570 + ], 571 + "engines": { 572 + "node": ">=18" 573 + } 574 + }, 575 + "node_modules/@esbuild/win32-arm64": { 576 + "version": "0.24.2", 577 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", 578 + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", 579 + "cpu": [ 580 + "arm64" 581 + ], 582 + "optional": true, 583 + "os": [ 584 + "win32" 585 + ], 586 + "engines": { 587 + "node": ">=18" 588 + } 589 + }, 590 + "node_modules/@esbuild/win32-ia32": { 591 + "version": "0.24.2", 592 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", 593 + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", 594 + "cpu": [ 595 + "ia32" 596 + ], 597 + "optional": true, 598 + "os": [ 599 + "win32" 600 + ], 601 + "engines": { 602 + "node": ">=18" 603 + } 604 + }, 605 + "node_modules/@esbuild/win32-x64": { 606 + "version": "0.24.2", 607 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", 608 + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", 609 + "cpu": [ 610 + "x64" 611 + ], 612 + "optional": true, 613 + "os": [ 614 + "win32" 615 + ], 616 + "engines": { 617 + "node": ">=18" 618 + } 619 + }, 620 + "node_modules/@eslint-community/eslint-utils": { 621 + "version": "4.4.1", 622 + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", 623 + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", 624 + "dev": true, 625 + "dependencies": { 626 + "eslint-visitor-keys": "^3.4.3" 627 + }, 628 + "engines": { 629 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 630 + }, 631 + "funding": { 632 + "url": "https://opencollective.com/eslint" 633 + }, 634 + "peerDependencies": { 635 + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 636 + } 637 + }, 638 + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { 639 + "version": "3.4.3", 640 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 641 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 642 + "dev": true, 643 + "engines": { 644 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 645 + }, 646 + "funding": { 647 + "url": "https://opencollective.com/eslint" 648 + } 649 + }, 650 + "node_modules/@eslint-community/regexpp": { 651 + "version": "4.12.1", 652 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 653 + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 654 + "dev": true, 655 + "engines": { 656 + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 657 + } 658 + }, 659 + "node_modules/@eslint/compat": { 660 + "version": "1.2.7", 661 + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.7.tgz", 662 + "integrity": "sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==", 663 + "dev": true, 664 + "engines": { 665 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 666 + }, 667 + "peerDependencies": { 668 + "eslint": "^9.10.0" 669 + }, 670 + "peerDependenciesMeta": { 671 + "eslint": { 672 + "optional": true 673 + } 674 + } 675 + }, 676 + "node_modules/@eslint/config-array": { 677 + "version": "0.19.2", 678 + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", 679 + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", 680 + "dev": true, 681 + "dependencies": { 682 + "@eslint/object-schema": "^2.1.6", 683 + "debug": "^4.3.1", 684 + "minimatch": "^3.1.2" 685 + }, 686 + "engines": { 687 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 688 + } 689 + }, 690 + "node_modules/@eslint/core": { 691 + "version": "0.12.0", 692 + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", 693 + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", 694 + "dev": true, 695 + "dependencies": { 696 + "@types/json-schema": "^7.0.15" 697 + }, 698 + "engines": { 699 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 700 + } 701 + }, 702 + "node_modules/@eslint/eslintrc": { 703 + "version": "3.3.0", 704 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", 705 + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", 706 + "dev": true, 707 + "dependencies": { 708 + "ajv": "^6.12.4", 709 + "debug": "^4.3.2", 710 + "espree": "^10.0.1", 711 + "globals": "^14.0.0", 712 + "ignore": "^5.2.0", 713 + "import-fresh": "^3.2.1", 714 + "js-yaml": "^4.1.0", 715 + "minimatch": "^3.1.2", 716 + "strip-json-comments": "^3.1.1" 717 + }, 718 + "engines": { 719 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 720 + }, 721 + "funding": { 722 + "url": "https://opencollective.com/eslint" 723 + } 724 + }, 725 + "node_modules/@eslint/eslintrc/node_modules/globals": { 726 + "version": "14.0.0", 727 + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 728 + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 729 + "dev": true, 730 + "engines": { 731 + "node": ">=18" 732 + }, 733 + "funding": { 734 + "url": "https://github.com/sponsors/sindresorhus" 735 + } 736 + }, 737 + "node_modules/@eslint/js": { 738 + "version": "9.21.0", 739 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", 740 + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", 741 + "dev": true, 742 + "engines": { 743 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 744 + } 745 + }, 746 + "node_modules/@eslint/object-schema": { 747 + "version": "2.1.6", 748 + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", 749 + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", 750 + "dev": true, 751 + "engines": { 752 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 753 + } 754 + }, 755 + "node_modules/@eslint/plugin-kit": { 756 + "version": "0.2.7", 757 + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", 758 + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", 759 + "dev": true, 760 + "dependencies": { 761 + "@eslint/core": "^0.12.0", 762 + "levn": "^0.4.1" 763 + }, 764 + "engines": { 765 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 766 + } 767 + }, 768 + "node_modules/@humanfs/core": { 769 + "version": "0.19.1", 770 + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 771 + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 772 + "dev": true, 773 + "engines": { 774 + "node": ">=18.18.0" 775 + } 776 + }, 777 + "node_modules/@humanfs/node": { 778 + "version": "0.16.6", 779 + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", 780 + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", 781 + "dev": true, 782 + "dependencies": { 783 + "@humanfs/core": "^0.19.1", 784 + "@humanwhocodes/retry": "^0.3.0" 785 + }, 786 + "engines": { 787 + "node": ">=18.18.0" 788 + } 789 + }, 790 + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { 791 + "version": "0.3.1", 792 + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", 793 + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", 794 + "dev": true, 795 + "engines": { 796 + "node": ">=18.18" 797 + }, 798 + "funding": { 799 + "type": "github", 800 + "url": "https://github.com/sponsors/nzakas" 801 + } 802 + }, 803 + "node_modules/@humanwhocodes/module-importer": { 804 + "version": "1.0.1", 805 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 806 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 807 + "dev": true, 808 + "engines": { 809 + "node": ">=12.22" 810 + }, 811 + "funding": { 812 + "type": "github", 813 + "url": "https://github.com/sponsors/nzakas" 814 + } 815 + }, 816 + "node_modules/@humanwhocodes/retry": { 817 + "version": "0.4.2", 818 + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", 819 + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", 820 + "dev": true, 821 + "engines": { 822 + "node": ">=18.18" 823 + }, 824 + "funding": { 825 + "type": "github", 826 + "url": "https://github.com/sponsors/nzakas" 827 + } 828 + }, 829 + "node_modules/@jridgewell/gen-mapping": { 830 + "version": "0.3.8", 831 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 832 + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 833 + "dependencies": { 834 + "@jridgewell/set-array": "^1.2.1", 835 + "@jridgewell/sourcemap-codec": "^1.4.10", 836 + "@jridgewell/trace-mapping": "^0.3.24" 837 + }, 838 + "engines": { 839 + "node": ">=6.0.0" 840 + } 841 + }, 842 + "node_modules/@jridgewell/resolve-uri": { 843 + "version": "3.1.2", 844 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 845 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 846 + "engines": { 847 + "node": ">=6.0.0" 848 + } 849 + }, 850 + "node_modules/@jridgewell/set-array": { 851 + "version": "1.2.1", 852 + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 853 + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 854 + "engines": { 855 + "node": ">=6.0.0" 856 + } 857 + }, 858 + "node_modules/@jridgewell/sourcemap-codec": { 859 + "version": "1.5.0", 860 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 861 + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" 862 + }, 863 + "node_modules/@jridgewell/trace-mapping": { 864 + "version": "0.3.25", 865 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 866 + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 867 + "dependencies": { 868 + "@jridgewell/resolve-uri": "^3.1.0", 869 + "@jridgewell/sourcemap-codec": "^1.4.14" 870 + } 871 + }, 872 + "node_modules/@nodelib/fs.scandir": { 873 + "version": "2.1.5", 874 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 875 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 876 + "dev": true, 877 + "dependencies": { 878 + "@nodelib/fs.stat": "2.0.5", 879 + "run-parallel": "^1.1.9" 880 + }, 881 + "engines": { 882 + "node": ">= 8" 883 + } 884 + }, 885 + "node_modules/@nodelib/fs.stat": { 886 + "version": "2.0.5", 887 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 888 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 889 + "dev": true, 890 + "engines": { 891 + "node": ">= 8" 892 + } 893 + }, 894 + "node_modules/@nodelib/fs.walk": { 895 + "version": "1.2.8", 896 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 897 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 898 + "dev": true, 899 + "dependencies": { 900 + "@nodelib/fs.scandir": "2.1.5", 901 + "fastq": "^1.6.0" 902 + }, 903 + "engines": { 904 + "node": ">= 8" 905 + } 906 + }, 907 + "node_modules/@polka/url": { 908 + "version": "1.0.0-next.28", 909 + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", 910 + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==" 911 + }, 912 + "node_modules/@rollup/rollup-android-arm-eabi": { 913 + "version": "4.34.8", 914 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", 915 + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", 916 + "cpu": [ 917 + "arm" 918 + ], 919 + "optional": true, 920 + "os": [ 921 + "android" 922 + ] 923 + }, 924 + "node_modules/@rollup/rollup-android-arm64": { 925 + "version": "4.34.8", 926 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", 927 + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", 928 + "cpu": [ 929 + "arm64" 930 + ], 931 + "optional": true, 932 + "os": [ 933 + "android" 934 + ] 935 + }, 936 + "node_modules/@rollup/rollup-darwin-arm64": { 937 + "version": "4.34.8", 938 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", 939 + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", 940 + "cpu": [ 941 + "arm64" 942 + ], 943 + "optional": true, 944 + "os": [ 945 + "darwin" 946 + ] 947 + }, 948 + "node_modules/@rollup/rollup-darwin-x64": { 949 + "version": "4.34.8", 950 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", 951 + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", 952 + "cpu": [ 953 + "x64" 954 + ], 955 + "optional": true, 956 + "os": [ 957 + "darwin" 958 + ] 959 + }, 960 + "node_modules/@rollup/rollup-freebsd-arm64": { 961 + "version": "4.34.8", 962 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", 963 + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", 964 + "cpu": [ 965 + "arm64" 966 + ], 967 + "optional": true, 968 + "os": [ 969 + "freebsd" 970 + ] 971 + }, 972 + "node_modules/@rollup/rollup-freebsd-x64": { 973 + "version": "4.34.8", 974 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", 975 + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", 976 + "cpu": [ 977 + "x64" 978 + ], 979 + "optional": true, 980 + "os": [ 981 + "freebsd" 982 + ] 983 + }, 984 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 985 + "version": "4.34.8", 986 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", 987 + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", 988 + "cpu": [ 989 + "arm" 990 + ], 991 + "optional": true, 992 + "os": [ 993 + "linux" 994 + ] 995 + }, 996 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 997 + "version": "4.34.8", 998 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", 999 + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", 1000 + "cpu": [ 1001 + "arm" 1002 + ], 1003 + "optional": true, 1004 + "os": [ 1005 + "linux" 1006 + ] 1007 + }, 1008 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 1009 + "version": "4.34.8", 1010 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", 1011 + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", 1012 + "cpu": [ 1013 + "arm64" 1014 + ], 1015 + "optional": true, 1016 + "os": [ 1017 + "linux" 1018 + ] 1019 + }, 1020 + "node_modules/@rollup/rollup-linux-arm64-musl": { 1021 + "version": "4.34.8", 1022 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", 1023 + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", 1024 + "cpu": [ 1025 + "arm64" 1026 + ], 1027 + "optional": true, 1028 + "os": [ 1029 + "linux" 1030 + ] 1031 + }, 1032 + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 1033 + "version": "4.34.8", 1034 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", 1035 + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", 1036 + "cpu": [ 1037 + "loong64" 1038 + ], 1039 + "optional": true, 1040 + "os": [ 1041 + "linux" 1042 + ] 1043 + }, 1044 + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 1045 + "version": "4.34.8", 1046 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", 1047 + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", 1048 + "cpu": [ 1049 + "ppc64" 1050 + ], 1051 + "optional": true, 1052 + "os": [ 1053 + "linux" 1054 + ] 1055 + }, 1056 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1057 + "version": "4.34.8", 1058 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", 1059 + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", 1060 + "cpu": [ 1061 + "riscv64" 1062 + ], 1063 + "optional": true, 1064 + "os": [ 1065 + "linux" 1066 + ] 1067 + }, 1068 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 1069 + "version": "4.34.8", 1070 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", 1071 + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", 1072 + "cpu": [ 1073 + "s390x" 1074 + ], 1075 + "optional": true, 1076 + "os": [ 1077 + "linux" 1078 + ] 1079 + }, 1080 + "node_modules/@rollup/rollup-linux-x64-gnu": { 1081 + "version": "4.34.8", 1082 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", 1083 + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", 1084 + "cpu": [ 1085 + "x64" 1086 + ], 1087 + "optional": true, 1088 + "os": [ 1089 + "linux" 1090 + ] 1091 + }, 1092 + "node_modules/@rollup/rollup-linux-x64-musl": { 1093 + "version": "4.34.8", 1094 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", 1095 + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", 1096 + "cpu": [ 1097 + "x64" 1098 + ], 1099 + "optional": true, 1100 + "os": [ 1101 + "linux" 1102 + ] 1103 + }, 1104 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 1105 + "version": "4.34.8", 1106 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", 1107 + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", 1108 + "cpu": [ 1109 + "arm64" 1110 + ], 1111 + "optional": true, 1112 + "os": [ 1113 + "win32" 1114 + ] 1115 + }, 1116 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 1117 + "version": "4.34.8", 1118 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", 1119 + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", 1120 + "cpu": [ 1121 + "ia32" 1122 + ], 1123 + "optional": true, 1124 + "os": [ 1125 + "win32" 1126 + ] 1127 + }, 1128 + "node_modules/@rollup/rollup-win32-x64-msvc": { 1129 + "version": "4.34.8", 1130 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", 1131 + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", 1132 + "cpu": [ 1133 + "x64" 1134 + ], 1135 + "optional": true, 1136 + "os": [ 1137 + "win32" 1138 + ] 1139 + }, 1140 + "node_modules/@sveltejs/adapter-auto": { 1141 + "version": "4.0.0", 1142 + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-4.0.0.tgz", 1143 + "integrity": "sha512-kmuYSQdD2AwThymQF0haQhM8rE5rhutQXG4LNbnbShwhMO4qQGnKaaTy+88DuNSuoQDi58+thpq8XpHc1+oEKQ==", 1144 + "dev": true, 1145 + "dependencies": { 1146 + "import-meta-resolve": "^4.1.0" 1147 + }, 1148 + "peerDependencies": { 1149 + "@sveltejs/kit": "^2.0.0" 1150 + } 1151 + }, 1152 + "node_modules/@sveltejs/adapter-static": { 1153 + "version": "3.0.8", 1154 + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz", 1155 + "integrity": "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==", 1156 + "peerDependencies": { 1157 + "@sveltejs/kit": "^2.0.0" 1158 + } 1159 + }, 1160 + "node_modules/@sveltejs/kit": { 1161 + "version": "2.17.2", 1162 + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.17.2.tgz", 1163 + "integrity": "sha512-Vypk02baf7qd3SOB1uUwUC/3Oka+srPo2J0a8YN3EfJypRshDkNx9HzNKjSmhOnGWwT+SSO06+N0mAb8iVTmTQ==", 1164 + "dependencies": { 1165 + "@types/cookie": "^0.6.0", 1166 + "cookie": "^0.6.0", 1167 + "devalue": "^5.1.0", 1168 + "esm-env": "^1.2.2", 1169 + "import-meta-resolve": "^4.1.0", 1170 + "kleur": "^4.1.5", 1171 + "magic-string": "^0.30.5", 1172 + "mrmime": "^2.0.0", 1173 + "sade": "^1.8.1", 1174 + "set-cookie-parser": "^2.6.0", 1175 + "sirv": "^3.0.0" 1176 + }, 1177 + "bin": { 1178 + "svelte-kit": "svelte-kit.js" 1179 + }, 1180 + "engines": { 1181 + "node": ">=18.13" 1182 + }, 1183 + "peerDependencies": { 1184 + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0", 1185 + "svelte": "^4.0.0 || ^5.0.0-next.0", 1186 + "vite": "^5.0.3 || ^6.0.0" 1187 + } 1188 + }, 1189 + "node_modules/@sveltejs/vite-plugin-svelte": { 1190 + "version": "5.0.3", 1191 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.0.3.tgz", 1192 + "integrity": "sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==", 1193 + "dependencies": { 1194 + "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", 1195 + "debug": "^4.4.0", 1196 + "deepmerge": "^4.3.1", 1197 + "kleur": "^4.1.5", 1198 + "magic-string": "^0.30.15", 1199 + "vitefu": "^1.0.4" 1200 + }, 1201 + "engines": { 1202 + "node": "^18.0.0 || ^20.0.0 || >=22" 1203 + }, 1204 + "peerDependencies": { 1205 + "svelte": "^5.0.0", 1206 + "vite": "^6.0.0" 1207 + } 1208 + }, 1209 + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 1210 + "version": "4.0.1", 1211 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", 1212 + "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", 1213 + "dependencies": { 1214 + "debug": "^4.3.7" 1215 + }, 1216 + "engines": { 1217 + "node": "^18.0.0 || ^20.0.0 || >=22" 1218 + }, 1219 + "peerDependencies": { 1220 + "@sveltejs/vite-plugin-svelte": "^5.0.0", 1221 + "svelte": "^5.0.0", 1222 + "vite": "^6.0.0" 1223 + } 1224 + }, 1225 + "node_modules/@tailwindcss/forms": { 1226 + "version": "0.5.10", 1227 + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", 1228 + "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", 1229 + "dependencies": { 1230 + "mini-svg-data-uri": "^1.2.3" 1231 + }, 1232 + "peerDependencies": { 1233 + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" 1234 + } 1235 + }, 1236 + "node_modules/@tailwindcss/node": { 1237 + "version": "4.0.8", 1238 + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.8.tgz", 1239 + "integrity": "sha512-FKArQpbrbwv08TNT0k7ejYXpF+R8knZFAatNc0acOxbgeqLzwb86r+P3LGOjIeI3Idqe9CVkZrh4GlsJLJKkkw==", 1240 + "dev": true, 1241 + "dependencies": { 1242 + "enhanced-resolve": "^5.18.1", 1243 + "jiti": "^2.4.2", 1244 + "tailwindcss": "4.0.8" 1245 + } 1246 + }, 1247 + "node_modules/@tailwindcss/oxide": { 1248 + "version": "4.0.8", 1249 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.8.tgz", 1250 + "integrity": "sha512-KfMcuAu/Iw+DcV1e8twrFyr2yN8/ZDC/odIGta4wuuJOGkrkHZbvJvRNIbQNhGh7erZTYV6Ie0IeD6WC9Y8Hcw==", 1251 + "dev": true, 1252 + "engines": { 1253 + "node": ">= 10" 1254 + }, 1255 + "optionalDependencies": { 1256 + "@tailwindcss/oxide-android-arm64": "4.0.8", 1257 + "@tailwindcss/oxide-darwin-arm64": "4.0.8", 1258 + "@tailwindcss/oxide-darwin-x64": "4.0.8", 1259 + "@tailwindcss/oxide-freebsd-x64": "4.0.8", 1260 + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.8", 1261 + "@tailwindcss/oxide-linux-arm64-gnu": "4.0.8", 1262 + "@tailwindcss/oxide-linux-arm64-musl": "4.0.8", 1263 + "@tailwindcss/oxide-linux-x64-gnu": "4.0.8", 1264 + "@tailwindcss/oxide-linux-x64-musl": "4.0.8", 1265 + "@tailwindcss/oxide-win32-arm64-msvc": "4.0.8", 1266 + "@tailwindcss/oxide-win32-x64-msvc": "4.0.8" 1267 + } 1268 + }, 1269 + "node_modules/@tailwindcss/oxide-android-arm64": { 1270 + "version": "4.0.8", 1271 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.8.tgz", 1272 + "integrity": "sha512-We7K79+Sm4mwJHk26Yzu/GAj7C7myemm7PeXvpgMxyxO70SSFSL3uCcqFbz9JA5M5UPkrl7N9fkBe/Y0iazqpA==", 1273 + "cpu": [ 1274 + "arm64" 1275 + ], 1276 + "dev": true, 1277 + "optional": true, 1278 + "os": [ 1279 + "android" 1280 + ], 1281 + "engines": { 1282 + "node": ">= 10" 1283 + } 1284 + }, 1285 + "node_modules/@tailwindcss/oxide-darwin-arm64": { 1286 + "version": "4.0.8", 1287 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.8.tgz", 1288 + "integrity": "sha512-Lv9Isi2EwkCTG1sRHNDi0uRNN1UGFdEThUAGFrydRmQZnraGLMjN8gahzg2FFnOizDl7LB2TykLUuiw833DSNg==", 1289 + "cpu": [ 1290 + "arm64" 1291 + ], 1292 + "dev": true, 1293 + "optional": true, 1294 + "os": [ 1295 + "darwin" 1296 + ], 1297 + "engines": { 1298 + "node": ">= 10" 1299 + } 1300 + }, 1301 + "node_modules/@tailwindcss/oxide-darwin-x64": { 1302 + "version": "4.0.8", 1303 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.8.tgz", 1304 + "integrity": "sha512-fWfywfYIlSWtKoqWTjukTHLWV3ARaBRjXCC2Eo0l6KVpaqGY4c2y8snUjp1xpxUtpqwMvCvFWFaleMoz1Vhzlw==", 1305 + "cpu": [ 1306 + "x64" 1307 + ], 1308 + "dev": true, 1309 + "optional": true, 1310 + "os": [ 1311 + "darwin" 1312 + ], 1313 + "engines": { 1314 + "node": ">= 10" 1315 + } 1316 + }, 1317 + "node_modules/@tailwindcss/oxide-freebsd-x64": { 1318 + "version": "4.0.8", 1319 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.8.tgz", 1320 + "integrity": "sha512-SO+dyvjJV9G94bnmq2288Ke0BIdvrbSbvtPLaQdqjqHR83v5L2fWADyFO+1oecHo9Owsk8MxcXh1agGVPIKIqw==", 1321 + "cpu": [ 1322 + "x64" 1323 + ], 1324 + "dev": true, 1325 + "optional": true, 1326 + "os": [ 1327 + "freebsd" 1328 + ], 1329 + "engines": { 1330 + "node": ">= 10" 1331 + } 1332 + }, 1333 + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { 1334 + "version": "4.0.8", 1335 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.8.tgz", 1336 + "integrity": "sha512-ZSHggWiEblQNV69V0qUK5vuAtHP+I+S2eGrKGJ5lPgwgJeAd6GjLsVBN+Mqn2SPVfYM3BOpS9jX/zVg9RWQVDQ==", 1337 + "cpu": [ 1338 + "arm" 1339 + ], 1340 + "dev": true, 1341 + "optional": true, 1342 + "os": [ 1343 + "linux" 1344 + ], 1345 + "engines": { 1346 + "node": ">= 10" 1347 + } 1348 + }, 1349 + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { 1350 + "version": "4.0.8", 1351 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.8.tgz", 1352 + "integrity": "sha512-xWpr6M0OZLDNsr7+bQz+3X7zcnDJZJ1N9gtBWCtfhkEtDjjxYEp+Lr5L5nc/yXlL4MyCHnn0uonGVXy3fhxaVA==", 1353 + "cpu": [ 1354 + "arm64" 1355 + ], 1356 + "dev": true, 1357 + "optional": true, 1358 + "os": [ 1359 + "linux" 1360 + ], 1361 + "engines": { 1362 + "node": ">= 10" 1363 + } 1364 + }, 1365 + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { 1366 + "version": "4.0.8", 1367 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.8.tgz", 1368 + "integrity": "sha512-5tz2IL7LN58ssGEq7h/staD7pu/izF/KeMWdlJ86WDe2Ah46LF3ET6ZGKTr5eZMrnEA0M9cVFuSPprKRHNgjeg==", 1369 + "cpu": [ 1370 + "arm64" 1371 + ], 1372 + "dev": true, 1373 + "optional": true, 1374 + "os": [ 1375 + "linux" 1376 + ], 1377 + "engines": { 1378 + "node": ">= 10" 1379 + } 1380 + }, 1381 + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { 1382 + "version": "4.0.8", 1383 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.8.tgz", 1384 + "integrity": "sha512-KSzMkhyrxAQyY2o194NKVKU9j/c+NFSoMvnHWFaNHKi3P1lb+Vq1UC19tLHrmxSkKapcMMu69D7+G1+FVGNDXQ==", 1385 + "cpu": [ 1386 + "x64" 1387 + ], 1388 + "dev": true, 1389 + "optional": true, 1390 + "os": [ 1391 + "linux" 1392 + ], 1393 + "engines": { 1394 + "node": ">= 10" 1395 + } 1396 + }, 1397 + "node_modules/@tailwindcss/oxide-linux-x64-musl": { 1398 + "version": "4.0.8", 1399 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.8.tgz", 1400 + "integrity": "sha512-yFYKG5UtHTRimjtqxUWXBgI4Tc6NJe3USjRIVdlTczpLRxq/SFwgzGl5JbatCxgSRDPBFwRrNPxq+ukfQFGdrw==", 1401 + "cpu": [ 1402 + "x64" 1403 + ], 1404 + "dev": true, 1405 + "optional": true, 1406 + "os": [ 1407 + "linux" 1408 + ], 1409 + "engines": { 1410 + "node": ">= 10" 1411 + } 1412 + }, 1413 + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { 1414 + "version": "4.0.8", 1415 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.8.tgz", 1416 + "integrity": "sha512-tndGujmCSba85cRCnQzXgpA2jx5gXimyspsUYae5jlPyLRG0RjXbDshFKOheVXU4TLflo7FSG8EHCBJ0EHTKdQ==", 1417 + "cpu": [ 1418 + "arm64" 1419 + ], 1420 + "dev": true, 1421 + "optional": true, 1422 + "os": [ 1423 + "win32" 1424 + ], 1425 + "engines": { 1426 + "node": ">= 10" 1427 + } 1428 + }, 1429 + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { 1430 + "version": "4.0.8", 1431 + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.8.tgz", 1432 + "integrity": "sha512-T77jroAc0p4EHVVgTUiNeFn6Nj3jtD3IeNId2X+0k+N1XxfNipy81BEkYErpKLiOkNhpNFjPee8/ZVas29b2OQ==", 1433 + "cpu": [ 1434 + "x64" 1435 + ], 1436 + "dev": true, 1437 + "optional": true, 1438 + "os": [ 1439 + "win32" 1440 + ], 1441 + "engines": { 1442 + "node": ">= 10" 1443 + } 1444 + }, 1445 + "node_modules/@tailwindcss/vite": { 1446 + "version": "4.0.8", 1447 + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.8.tgz", 1448 + "integrity": "sha512-+SAq44yLzYlzyrb7QTcFCdU8Xa7FOA0jp+Xby7fPMUie+MY9HhJysM7Vp+vL8qIp8ceQJfLD+FjgJuJ4lL6nyg==", 1449 + "dev": true, 1450 + "dependencies": { 1451 + "@tailwindcss/node": "4.0.8", 1452 + "@tailwindcss/oxide": "4.0.8", 1453 + "lightningcss": "^1.29.1", 1454 + "tailwindcss": "4.0.8" 1455 + }, 1456 + "peerDependencies": { 1457 + "vite": "^5.2.0 || ^6" 1458 + } 1459 + }, 1460 + "node_modules/@types/cookie": { 1461 + "version": "0.6.0", 1462 + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", 1463 + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" 1464 + }, 1465 + "node_modules/@types/estree": { 1466 + "version": "1.0.6", 1467 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 1468 + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" 1469 + }, 1470 + "node_modules/@types/json-schema": { 1471 + "version": "7.0.15", 1472 + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 1473 + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 1474 + "dev": true 1475 + }, 1476 + "node_modules/@typescript-eslint/eslint-plugin": { 1477 + "version": "8.24.1", 1478 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz", 1479 + "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==", 1480 + "dev": true, 1481 + "dependencies": { 1482 + "@eslint-community/regexpp": "^4.10.0", 1483 + "@typescript-eslint/scope-manager": "8.24.1", 1484 + "@typescript-eslint/type-utils": "8.24.1", 1485 + "@typescript-eslint/utils": "8.24.1", 1486 + "@typescript-eslint/visitor-keys": "8.24.1", 1487 + "graphemer": "^1.4.0", 1488 + "ignore": "^5.3.1", 1489 + "natural-compare": "^1.4.0", 1490 + "ts-api-utils": "^2.0.1" 1491 + }, 1492 + "engines": { 1493 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1494 + }, 1495 + "funding": { 1496 + "type": "opencollective", 1497 + "url": "https://opencollective.com/typescript-eslint" 1498 + }, 1499 + "peerDependencies": { 1500 + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", 1501 + "eslint": "^8.57.0 || ^9.0.0", 1502 + "typescript": ">=4.8.4 <5.8.0" 1503 + } 1504 + }, 1505 + "node_modules/@typescript-eslint/parser": { 1506 + "version": "8.24.1", 1507 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz", 1508 + "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==", 1509 + "dev": true, 1510 + "dependencies": { 1511 + "@typescript-eslint/scope-manager": "8.24.1", 1512 + "@typescript-eslint/types": "8.24.1", 1513 + "@typescript-eslint/typescript-estree": "8.24.1", 1514 + "@typescript-eslint/visitor-keys": "8.24.1", 1515 + "debug": "^4.3.4" 1516 + }, 1517 + "engines": { 1518 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1519 + }, 1520 + "funding": { 1521 + "type": "opencollective", 1522 + "url": "https://opencollective.com/typescript-eslint" 1523 + }, 1524 + "peerDependencies": { 1525 + "eslint": "^8.57.0 || ^9.0.0", 1526 + "typescript": ">=4.8.4 <5.8.0" 1527 + } 1528 + }, 1529 + "node_modules/@typescript-eslint/scope-manager": { 1530 + "version": "8.24.1", 1531 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", 1532 + "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", 1533 + "dev": true, 1534 + "dependencies": { 1535 + "@typescript-eslint/types": "8.24.1", 1536 + "@typescript-eslint/visitor-keys": "8.24.1" 1537 + }, 1538 + "engines": { 1539 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1540 + }, 1541 + "funding": { 1542 + "type": "opencollective", 1543 + "url": "https://opencollective.com/typescript-eslint" 1544 + } 1545 + }, 1546 + "node_modules/@typescript-eslint/type-utils": { 1547 + "version": "8.24.1", 1548 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", 1549 + "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", 1550 + "dev": true, 1551 + "dependencies": { 1552 + "@typescript-eslint/typescript-estree": "8.24.1", 1553 + "@typescript-eslint/utils": "8.24.1", 1554 + "debug": "^4.3.4", 1555 + "ts-api-utils": "^2.0.1" 1556 + }, 1557 + "engines": { 1558 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1559 + }, 1560 + "funding": { 1561 + "type": "opencollective", 1562 + "url": "https://opencollective.com/typescript-eslint" 1563 + }, 1564 + "peerDependencies": { 1565 + "eslint": "^8.57.0 || ^9.0.0", 1566 + "typescript": ">=4.8.4 <5.8.0" 1567 + } 1568 + }, 1569 + "node_modules/@typescript-eslint/types": { 1570 + "version": "8.24.1", 1571 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", 1572 + "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", 1573 + "dev": true, 1574 + "engines": { 1575 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1576 + }, 1577 + "funding": { 1578 + "type": "opencollective", 1579 + "url": "https://opencollective.com/typescript-eslint" 1580 + } 1581 + }, 1582 + "node_modules/@typescript-eslint/typescript-estree": { 1583 + "version": "8.24.1", 1584 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", 1585 + "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", 1586 + "dev": true, 1587 + "dependencies": { 1588 + "@typescript-eslint/types": "8.24.1", 1589 + "@typescript-eslint/visitor-keys": "8.24.1", 1590 + "debug": "^4.3.4", 1591 + "fast-glob": "^3.3.2", 1592 + "is-glob": "^4.0.3", 1593 + "minimatch": "^9.0.4", 1594 + "semver": "^7.6.0", 1595 + "ts-api-utils": "^2.0.1" 1596 + }, 1597 + "engines": { 1598 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1599 + }, 1600 + "funding": { 1601 + "type": "opencollective", 1602 + "url": "https://opencollective.com/typescript-eslint" 1603 + }, 1604 + "peerDependencies": { 1605 + "typescript": ">=4.8.4 <5.8.0" 1606 + } 1607 + }, 1608 + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { 1609 + "version": "2.0.1", 1610 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1611 + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1612 + "dev": true, 1613 + "dependencies": { 1614 + "balanced-match": "^1.0.0" 1615 + } 1616 + }, 1617 + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 1618 + "version": "9.0.5", 1619 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1620 + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1621 + "dev": true, 1622 + "dependencies": { 1623 + "brace-expansion": "^2.0.1" 1624 + }, 1625 + "engines": { 1626 + "node": ">=16 || 14 >=14.17" 1627 + }, 1628 + "funding": { 1629 + "url": "https://github.com/sponsors/isaacs" 1630 + } 1631 + }, 1632 + "node_modules/@typescript-eslint/utils": { 1633 + "version": "8.24.1", 1634 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", 1635 + "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", 1636 + "dev": true, 1637 + "dependencies": { 1638 + "@eslint-community/eslint-utils": "^4.4.0", 1639 + "@typescript-eslint/scope-manager": "8.24.1", 1640 + "@typescript-eslint/types": "8.24.1", 1641 + "@typescript-eslint/typescript-estree": "8.24.1" 1642 + }, 1643 + "engines": { 1644 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1645 + }, 1646 + "funding": { 1647 + "type": "opencollective", 1648 + "url": "https://opencollective.com/typescript-eslint" 1649 + }, 1650 + "peerDependencies": { 1651 + "eslint": "^8.57.0 || ^9.0.0", 1652 + "typescript": ">=4.8.4 <5.8.0" 1653 + } 1654 + }, 1655 + "node_modules/@typescript-eslint/visitor-keys": { 1656 + "version": "8.24.1", 1657 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", 1658 + "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", 1659 + "dev": true, 1660 + "dependencies": { 1661 + "@typescript-eslint/types": "8.24.1", 1662 + "eslint-visitor-keys": "^4.2.0" 1663 + }, 1664 + "engines": { 1665 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1666 + }, 1667 + "funding": { 1668 + "type": "opencollective", 1669 + "url": "https://opencollective.com/typescript-eslint" 1670 + } 1671 + }, 1672 + "node_modules/acorn": { 1673 + "version": "8.14.0", 1674 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 1675 + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 1676 + "bin": { 1677 + "acorn": "bin/acorn" 1678 + }, 1679 + "engines": { 1680 + "node": ">=0.4.0" 1681 + } 1682 + }, 1683 + "node_modules/acorn-jsx": { 1684 + "version": "5.3.2", 1685 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1686 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1687 + "dev": true, 1688 + "peerDependencies": { 1689 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 1690 + } 1691 + }, 1692 + "node_modules/acorn-typescript": { 1693 + "version": "1.4.13", 1694 + "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", 1695 + "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", 1696 + "peerDependencies": { 1697 + "acorn": ">=8.9.0" 1698 + } 1699 + }, 1700 + "node_modules/ajv": { 1701 + "version": "6.12.6", 1702 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1703 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1704 + "dev": true, 1705 + "dependencies": { 1706 + "fast-deep-equal": "^3.1.1", 1707 + "fast-json-stable-stringify": "^2.0.0", 1708 + "json-schema-traverse": "^0.4.1", 1709 + "uri-js": "^4.2.2" 1710 + }, 1711 + "funding": { 1712 + "type": "github", 1713 + "url": "https://github.com/sponsors/epoberezkin" 1714 + } 1715 + }, 1716 + "node_modules/ansi-styles": { 1717 + "version": "4.3.0", 1718 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1719 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1720 + "dev": true, 1721 + "dependencies": { 1722 + "color-convert": "^2.0.1" 1723 + }, 1724 + "engines": { 1725 + "node": ">=8" 1726 + }, 1727 + "funding": { 1728 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1729 + } 1730 + }, 1731 + "node_modules/argparse": { 1732 + "version": "2.0.1", 1733 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1734 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1735 + "dev": true 1736 + }, 1737 + "node_modules/aria-query": { 1738 + "version": "5.3.2", 1739 + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", 1740 + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", 1741 + "engines": { 1742 + "node": ">= 0.4" 1743 + } 1744 + }, 1745 + "node_modules/await-lock": { 1746 + "version": "2.2.2", 1747 + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", 1748 + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==" 1749 + }, 1750 + "node_modules/axobject-query": { 1751 + "version": "4.1.0", 1752 + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 1753 + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 1754 + "engines": { 1755 + "node": ">= 0.4" 1756 + } 1757 + }, 1758 + "node_modules/balanced-match": { 1759 + "version": "1.0.2", 1760 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1761 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1762 + "dev": true 1763 + }, 1764 + "node_modules/brace-expansion": { 1765 + "version": "1.1.11", 1766 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1767 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1768 + "dev": true, 1769 + "dependencies": { 1770 + "balanced-match": "^1.0.0", 1771 + "concat-map": "0.0.1" 1772 + } 1773 + }, 1774 + "node_modules/braces": { 1775 + "version": "3.0.3", 1776 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1777 + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1778 + "dev": true, 1779 + "dependencies": { 1780 + "fill-range": "^7.1.1" 1781 + }, 1782 + "engines": { 1783 + "node": ">=8" 1784 + } 1785 + }, 1786 + "node_modules/callsites": { 1787 + "version": "3.1.0", 1788 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1789 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1790 + "dev": true, 1791 + "engines": { 1792 + "node": ">=6" 1793 + } 1794 + }, 1795 + "node_modules/chalk": { 1796 + "version": "4.1.2", 1797 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1798 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1799 + "dev": true, 1800 + "dependencies": { 1801 + "ansi-styles": "^4.1.0", 1802 + "supports-color": "^7.1.0" 1803 + }, 1804 + "engines": { 1805 + "node": ">=10" 1806 + }, 1807 + "funding": { 1808 + "url": "https://github.com/chalk/chalk?sponsor=1" 1809 + } 1810 + }, 1811 + "node_modules/chokidar": { 1812 + "version": "4.0.3", 1813 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 1814 + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 1815 + "dev": true, 1816 + "dependencies": { 1817 + "readdirp": "^4.0.1" 1818 + }, 1819 + "engines": { 1820 + "node": ">= 14.16.0" 1821 + }, 1822 + "funding": { 1823 + "url": "https://paulmillr.com/funding/" 1824 + } 1825 + }, 1826 + "node_modules/clsx": { 1827 + "version": "2.1.1", 1828 + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 1829 + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 1830 + "engines": { 1831 + "node": ">=6" 1832 + } 1833 + }, 1834 + "node_modules/color-convert": { 1835 + "version": "2.0.1", 1836 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1837 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1838 + "dev": true, 1839 + "dependencies": { 1840 + "color-name": "~1.1.4" 1841 + }, 1842 + "engines": { 1843 + "node": ">=7.0.0" 1844 + } 1845 + }, 1846 + "node_modules/color-name": { 1847 + "version": "1.1.4", 1848 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1849 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1850 + "dev": true 1851 + }, 1852 + "node_modules/concat-map": { 1853 + "version": "0.0.1", 1854 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1855 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1856 + "dev": true 1857 + }, 1858 + "node_modules/cookie": { 1859 + "version": "0.6.0", 1860 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", 1861 + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", 1862 + "engines": { 1863 + "node": ">= 0.6" 1864 + } 1865 + }, 1866 + "node_modules/cross-spawn": { 1867 + "version": "7.0.6", 1868 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1869 + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1870 + "dev": true, 1871 + "dependencies": { 1872 + "path-key": "^3.1.0", 1873 + "shebang-command": "^2.0.0", 1874 + "which": "^2.0.1" 1875 + }, 1876 + "engines": { 1877 + "node": ">= 8" 1878 + } 1879 + }, 1880 + "node_modules/cssesc": { 1881 + "version": "3.0.0", 1882 + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 1883 + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 1884 + "dev": true, 1885 + "bin": { 1886 + "cssesc": "bin/cssesc" 1887 + }, 1888 + "engines": { 1889 + "node": ">=4" 1890 + } 1891 + }, 1892 + "node_modules/debug": { 1893 + "version": "4.4.0", 1894 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1895 + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1896 + "dependencies": { 1897 + "ms": "^2.1.3" 1898 + }, 1899 + "engines": { 1900 + "node": ">=6.0" 1901 + }, 1902 + "peerDependenciesMeta": { 1903 + "supports-color": { 1904 + "optional": true 1905 + } 1906 + } 1907 + }, 1908 + "node_modules/deep-is": { 1909 + "version": "0.1.4", 1910 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1911 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1912 + "dev": true 1913 + }, 1914 + "node_modules/deepmerge": { 1915 + "version": "4.3.1", 1916 + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1917 + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1918 + "engines": { 1919 + "node": ">=0.10.0" 1920 + } 1921 + }, 1922 + "node_modules/detect-libc": { 1923 + "version": "1.0.3", 1924 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 1925 + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", 1926 + "devOptional": true, 1927 + "bin": { 1928 + "detect-libc": "bin/detect-libc.js" 1929 + }, 1930 + "engines": { 1931 + "node": ">=0.10" 1932 + } 1933 + }, 1934 + "node_modules/devalue": { 1935 + "version": "5.1.1", 1936 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", 1937 + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" 1938 + }, 1939 + "node_modules/enhanced-resolve": { 1940 + "version": "5.18.1", 1941 + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", 1942 + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", 1943 + "dev": true, 1944 + "dependencies": { 1945 + "graceful-fs": "^4.2.4", 1946 + "tapable": "^2.2.0" 1947 + }, 1948 + "engines": { 1949 + "node": ">=10.13.0" 1950 + } 1951 + }, 1952 + "node_modules/esbuild": { 1953 + "version": "0.24.2", 1954 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", 1955 + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", 1956 + "hasInstallScript": true, 1957 + "bin": { 1958 + "esbuild": "bin/esbuild" 1959 + }, 1960 + "engines": { 1961 + "node": ">=18" 1962 + }, 1963 + "optionalDependencies": { 1964 + "@esbuild/aix-ppc64": "0.24.2", 1965 + "@esbuild/android-arm": "0.24.2", 1966 + "@esbuild/android-arm64": "0.24.2", 1967 + "@esbuild/android-x64": "0.24.2", 1968 + "@esbuild/darwin-arm64": "0.24.2", 1969 + "@esbuild/darwin-x64": "0.24.2", 1970 + "@esbuild/freebsd-arm64": "0.24.2", 1971 + "@esbuild/freebsd-x64": "0.24.2", 1972 + "@esbuild/linux-arm": "0.24.2", 1973 + "@esbuild/linux-arm64": "0.24.2", 1974 + "@esbuild/linux-ia32": "0.24.2", 1975 + "@esbuild/linux-loong64": "0.24.2", 1976 + "@esbuild/linux-mips64el": "0.24.2", 1977 + "@esbuild/linux-ppc64": "0.24.2", 1978 + "@esbuild/linux-riscv64": "0.24.2", 1979 + "@esbuild/linux-s390x": "0.24.2", 1980 + "@esbuild/linux-x64": "0.24.2", 1981 + "@esbuild/netbsd-arm64": "0.24.2", 1982 + "@esbuild/netbsd-x64": "0.24.2", 1983 + "@esbuild/openbsd-arm64": "0.24.2", 1984 + "@esbuild/openbsd-x64": "0.24.2", 1985 + "@esbuild/sunos-x64": "0.24.2", 1986 + "@esbuild/win32-arm64": "0.24.2", 1987 + "@esbuild/win32-ia32": "0.24.2", 1988 + "@esbuild/win32-x64": "0.24.2" 1989 + } 1990 + }, 1991 + "node_modules/escape-string-regexp": { 1992 + "version": "4.0.0", 1993 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1994 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1995 + "dev": true, 1996 + "engines": { 1997 + "node": ">=10" 1998 + }, 1999 + "funding": { 2000 + "url": "https://github.com/sponsors/sindresorhus" 2001 + } 2002 + }, 2003 + "node_modules/eslint": { 2004 + "version": "9.21.0", 2005 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", 2006 + "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", 2007 + "dev": true, 2008 + "dependencies": { 2009 + "@eslint-community/eslint-utils": "^4.2.0", 2010 + "@eslint-community/regexpp": "^4.12.1", 2011 + "@eslint/config-array": "^0.19.2", 2012 + "@eslint/core": "^0.12.0", 2013 + "@eslint/eslintrc": "^3.3.0", 2014 + "@eslint/js": "9.21.0", 2015 + "@eslint/plugin-kit": "^0.2.7", 2016 + "@humanfs/node": "^0.16.6", 2017 + "@humanwhocodes/module-importer": "^1.0.1", 2018 + "@humanwhocodes/retry": "^0.4.2", 2019 + "@types/estree": "^1.0.6", 2020 + "@types/json-schema": "^7.0.15", 2021 + "ajv": "^6.12.4", 2022 + "chalk": "^4.0.0", 2023 + "cross-spawn": "^7.0.6", 2024 + "debug": "^4.3.2", 2025 + "escape-string-regexp": "^4.0.0", 2026 + "eslint-scope": "^8.2.0", 2027 + "eslint-visitor-keys": "^4.2.0", 2028 + "espree": "^10.3.0", 2029 + "esquery": "^1.5.0", 2030 + "esutils": "^2.0.2", 2031 + "fast-deep-equal": "^3.1.3", 2032 + "file-entry-cache": "^8.0.0", 2033 + "find-up": "^5.0.0", 2034 + "glob-parent": "^6.0.2", 2035 + "ignore": "^5.2.0", 2036 + "imurmurhash": "^0.1.4", 2037 + "is-glob": "^4.0.0", 2038 + "json-stable-stringify-without-jsonify": "^1.0.1", 2039 + "lodash.merge": "^4.6.2", 2040 + "minimatch": "^3.1.2", 2041 + "natural-compare": "^1.4.0", 2042 + "optionator": "^0.9.3" 2043 + }, 2044 + "bin": { 2045 + "eslint": "bin/eslint.js" 2046 + }, 2047 + "engines": { 2048 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2049 + }, 2050 + "funding": { 2051 + "url": "https://eslint.org/donate" 2052 + }, 2053 + "peerDependencies": { 2054 + "jiti": "*" 2055 + }, 2056 + "peerDependenciesMeta": { 2057 + "jiti": { 2058 + "optional": true 2059 + } 2060 + } 2061 + }, 2062 + "node_modules/eslint-compat-utils": { 2063 + "version": "0.5.1", 2064 + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", 2065 + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", 2066 + "dev": true, 2067 + "dependencies": { 2068 + "semver": "^7.5.4" 2069 + }, 2070 + "engines": { 2071 + "node": ">=12" 2072 + }, 2073 + "peerDependencies": { 2074 + "eslint": ">=6.0.0" 2075 + } 2076 + }, 2077 + "node_modules/eslint-config-prettier": { 2078 + "version": "10.0.1", 2079 + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", 2080 + "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", 2081 + "dev": true, 2082 + "bin": { 2083 + "eslint-config-prettier": "build/bin/cli.js" 2084 + }, 2085 + "peerDependencies": { 2086 + "eslint": ">=7.0.0" 2087 + } 2088 + }, 2089 + "node_modules/eslint-plugin-svelte": { 2090 + "version": "2.46.1", 2091 + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz", 2092 + "integrity": "sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==", 2093 + "dev": true, 2094 + "dependencies": { 2095 + "@eslint-community/eslint-utils": "^4.4.0", 2096 + "@jridgewell/sourcemap-codec": "^1.4.15", 2097 + "eslint-compat-utils": "^0.5.1", 2098 + "esutils": "^2.0.3", 2099 + "known-css-properties": "^0.35.0", 2100 + "postcss": "^8.4.38", 2101 + "postcss-load-config": "^3.1.4", 2102 + "postcss-safe-parser": "^6.0.0", 2103 + "postcss-selector-parser": "^6.1.0", 2104 + "semver": "^7.6.2", 2105 + "svelte-eslint-parser": "^0.43.0" 2106 + }, 2107 + "engines": { 2108 + "node": "^14.17.0 || >=16.0.0" 2109 + }, 2110 + "funding": { 2111 + "url": "https://github.com/sponsors/ota-meshi" 2112 + }, 2113 + "peerDependencies": { 2114 + "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", 2115 + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" 2116 + }, 2117 + "peerDependenciesMeta": { 2118 + "svelte": { 2119 + "optional": true 2120 + } 2121 + } 2122 + }, 2123 + "node_modules/eslint-scope": { 2124 + "version": "8.2.0", 2125 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", 2126 + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", 2127 + "dev": true, 2128 + "dependencies": { 2129 + "esrecurse": "^4.3.0", 2130 + "estraverse": "^5.2.0" 2131 + }, 2132 + "engines": { 2133 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2134 + }, 2135 + "funding": { 2136 + "url": "https://opencollective.com/eslint" 2137 + } 2138 + }, 2139 + "node_modules/eslint-visitor-keys": { 2140 + "version": "4.2.0", 2141 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", 2142 + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", 2143 + "dev": true, 2144 + "engines": { 2145 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2146 + }, 2147 + "funding": { 2148 + "url": "https://opencollective.com/eslint" 2149 + } 2150 + }, 2151 + "node_modules/esm-env": { 2152 + "version": "1.2.2", 2153 + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 2154 + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" 2155 + }, 2156 + "node_modules/espree": { 2157 + "version": "10.3.0", 2158 + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", 2159 + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", 2160 + "dev": true, 2161 + "dependencies": { 2162 + "acorn": "^8.14.0", 2163 + "acorn-jsx": "^5.3.2", 2164 + "eslint-visitor-keys": "^4.2.0" 2165 + }, 2166 + "engines": { 2167 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2168 + }, 2169 + "funding": { 2170 + "url": "https://opencollective.com/eslint" 2171 + } 2172 + }, 2173 + "node_modules/esquery": { 2174 + "version": "1.6.0", 2175 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 2176 + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 2177 + "dev": true, 2178 + "dependencies": { 2179 + "estraverse": "^5.1.0" 2180 + }, 2181 + "engines": { 2182 + "node": ">=0.10" 2183 + } 2184 + }, 2185 + "node_modules/esrap": { 2186 + "version": "1.4.5", 2187 + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.5.tgz", 2188 + "integrity": "sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==", 2189 + "dependencies": { 2190 + "@jridgewell/sourcemap-codec": "^1.4.15" 2191 + } 2192 + }, 2193 + "node_modules/esrecurse": { 2194 + "version": "4.3.0", 2195 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2196 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2197 + "dev": true, 2198 + "dependencies": { 2199 + "estraverse": "^5.2.0" 2200 + }, 2201 + "engines": { 2202 + "node": ">=4.0" 2203 + } 2204 + }, 2205 + "node_modules/estraverse": { 2206 + "version": "5.3.0", 2207 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2208 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2209 + "dev": true, 2210 + "engines": { 2211 + "node": ">=4.0" 2212 + } 2213 + }, 2214 + "node_modules/esutils": { 2215 + "version": "2.0.3", 2216 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2217 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2218 + "dev": true, 2219 + "engines": { 2220 + "node": ">=0.10.0" 2221 + } 2222 + }, 2223 + "node_modules/fast-deep-equal": { 2224 + "version": "3.1.3", 2225 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2226 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2227 + "dev": true 2228 + }, 2229 + "node_modules/fast-glob": { 2230 + "version": "3.3.3", 2231 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 2232 + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 2233 + "dev": true, 2234 + "dependencies": { 2235 + "@nodelib/fs.stat": "^2.0.2", 2236 + "@nodelib/fs.walk": "^1.2.3", 2237 + "glob-parent": "^5.1.2", 2238 + "merge2": "^1.3.0", 2239 + "micromatch": "^4.0.8" 2240 + }, 2241 + "engines": { 2242 + "node": ">=8.6.0" 2243 + } 2244 + }, 2245 + "node_modules/fast-glob/node_modules/glob-parent": { 2246 + "version": "5.1.2", 2247 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2248 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2249 + "dev": true, 2250 + "dependencies": { 2251 + "is-glob": "^4.0.1" 2252 + }, 2253 + "engines": { 2254 + "node": ">= 6" 2255 + } 2256 + }, 2257 + "node_modules/fast-json-stable-stringify": { 2258 + "version": "2.1.0", 2259 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2260 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2261 + "dev": true 2262 + }, 2263 + "node_modules/fast-levenshtein": { 2264 + "version": "2.0.6", 2265 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2266 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 2267 + "dev": true 2268 + }, 2269 + "node_modules/fastq": { 2270 + "version": "1.19.0", 2271 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", 2272 + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", 2273 + "dev": true, 2274 + "dependencies": { 2275 + "reusify": "^1.0.4" 2276 + } 2277 + }, 2278 + "node_modules/fdir": { 2279 + "version": "6.4.3", 2280 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", 2281 + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", 2282 + "dev": true, 2283 + "peerDependencies": { 2284 + "picomatch": "^3 || ^4" 2285 + }, 2286 + "peerDependenciesMeta": { 2287 + "picomatch": { 2288 + "optional": true 2289 + } 2290 + } 2291 + }, 2292 + "node_modules/file-entry-cache": { 2293 + "version": "8.0.0", 2294 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 2295 + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 2296 + "dev": true, 2297 + "dependencies": { 2298 + "flat-cache": "^4.0.0" 2299 + }, 2300 + "engines": { 2301 + "node": ">=16.0.0" 2302 + } 2303 + }, 2304 + "node_modules/fill-range": { 2305 + "version": "7.1.1", 2306 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 2307 + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 2308 + "dev": true, 2309 + "dependencies": { 2310 + "to-regex-range": "^5.0.1" 2311 + }, 2312 + "engines": { 2313 + "node": ">=8" 2314 + } 2315 + }, 2316 + "node_modules/find-up": { 2317 + "version": "5.0.0", 2318 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2319 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2320 + "dev": true, 2321 + "dependencies": { 2322 + "locate-path": "^6.0.0", 2323 + "path-exists": "^4.0.0" 2324 + }, 2325 + "engines": { 2326 + "node": ">=10" 2327 + }, 2328 + "funding": { 2329 + "url": "https://github.com/sponsors/sindresorhus" 2330 + } 2331 + }, 2332 + "node_modules/flat-cache": { 2333 + "version": "4.0.1", 2334 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 2335 + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 2336 + "dev": true, 2337 + "dependencies": { 2338 + "flatted": "^3.2.9", 2339 + "keyv": "^4.5.4" 2340 + }, 2341 + "engines": { 2342 + "node": ">=16" 2343 + } 2344 + }, 2345 + "node_modules/flatted": { 2346 + "version": "3.3.3", 2347 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", 2348 + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", 2349 + "dev": true 2350 + }, 2351 + "node_modules/fsevents": { 2352 + "version": "2.3.3", 2353 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2354 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2355 + "hasInstallScript": true, 2356 + "optional": true, 2357 + "os": [ 2358 + "darwin" 2359 + ], 2360 + "engines": { 2361 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2362 + } 2363 + }, 2364 + "node_modules/glob-parent": { 2365 + "version": "6.0.2", 2366 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2367 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2368 + "dev": true, 2369 + "dependencies": { 2370 + "is-glob": "^4.0.3" 2371 + }, 2372 + "engines": { 2373 + "node": ">=10.13.0" 2374 + } 2375 + }, 2376 + "node_modules/globals": { 2377 + "version": "15.15.0", 2378 + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", 2379 + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", 2380 + "dev": true, 2381 + "engines": { 2382 + "node": ">=18" 2383 + }, 2384 + "funding": { 2385 + "url": "https://github.com/sponsors/sindresorhus" 2386 + } 2387 + }, 2388 + "node_modules/graceful-fs": { 2389 + "version": "4.2.11", 2390 + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 2391 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 2392 + "dev": true 2393 + }, 2394 + "node_modules/graphemer": { 2395 + "version": "1.4.0", 2396 + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 2397 + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" 2398 + }, 2399 + "node_modules/has-flag": { 2400 + "version": "4.0.0", 2401 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2402 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2403 + "dev": true, 2404 + "engines": { 2405 + "node": ">=8" 2406 + } 2407 + }, 2408 + "node_modules/ignore": { 2409 + "version": "5.3.2", 2410 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 2411 + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 2412 + "dev": true, 2413 + "engines": { 2414 + "node": ">= 4" 2415 + } 2416 + }, 2417 + "node_modules/import-fresh": { 2418 + "version": "3.3.1", 2419 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 2420 + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 2421 + "dev": true, 2422 + "dependencies": { 2423 + "parent-module": "^1.0.0", 2424 + "resolve-from": "^4.0.0" 2425 + }, 2426 + "engines": { 2427 + "node": ">=6" 2428 + }, 2429 + "funding": { 2430 + "url": "https://github.com/sponsors/sindresorhus" 2431 + } 2432 + }, 2433 + "node_modules/import-meta-resolve": { 2434 + "version": "4.1.0", 2435 + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", 2436 + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", 2437 + "funding": { 2438 + "type": "github", 2439 + "url": "https://github.com/sponsors/wooorm" 2440 + } 2441 + }, 2442 + "node_modules/imurmurhash": { 2443 + "version": "0.1.4", 2444 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2445 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2446 + "dev": true, 2447 + "engines": { 2448 + "node": ">=0.8.19" 2449 + } 2450 + }, 2451 + "node_modules/is-extglob": { 2452 + "version": "2.1.1", 2453 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2454 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2455 + "dev": true, 2456 + "engines": { 2457 + "node": ">=0.10.0" 2458 + } 2459 + }, 2460 + "node_modules/is-glob": { 2461 + "version": "4.0.3", 2462 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2463 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2464 + "dev": true, 2465 + "dependencies": { 2466 + "is-extglob": "^2.1.1" 2467 + }, 2468 + "engines": { 2469 + "node": ">=0.10.0" 2470 + } 2471 + }, 2472 + "node_modules/is-number": { 2473 + "version": "7.0.0", 2474 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2475 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2476 + "dev": true, 2477 + "engines": { 2478 + "node": ">=0.12.0" 2479 + } 2480 + }, 2481 + "node_modules/is-reference": { 2482 + "version": "3.0.3", 2483 + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 2484 + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 2485 + "dependencies": { 2486 + "@types/estree": "^1.0.6" 2487 + } 2488 + }, 2489 + "node_modules/isexe": { 2490 + "version": "2.0.0", 2491 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2492 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2493 + "dev": true 2494 + }, 2495 + "node_modules/iso-datestring-validator": { 2496 + "version": "2.2.2", 2497 + "resolved": "https://registry.npmjs.org/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz", 2498 + "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==" 2499 + }, 2500 + "node_modules/jiti": { 2501 + "version": "2.4.2", 2502 + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", 2503 + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", 2504 + "devOptional": true, 2505 + "bin": { 2506 + "jiti": "lib/jiti-cli.mjs" 2507 + } 2508 + }, 2509 + "node_modules/jose": { 2510 + "version": "5.10.0", 2511 + "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", 2512 + "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", 2513 + "funding": { 2514 + "url": "https://github.com/sponsors/panva" 2515 + } 2516 + }, 2517 + "node_modules/js-yaml": { 2518 + "version": "4.1.0", 2519 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2520 + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2521 + "dev": true, 2522 + "dependencies": { 2523 + "argparse": "^2.0.1" 2524 + }, 2525 + "bin": { 2526 + "js-yaml": "bin/js-yaml.js" 2527 + } 2528 + }, 2529 + "node_modules/json-buffer": { 2530 + "version": "3.0.1", 2531 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 2532 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 2533 + "dev": true 2534 + }, 2535 + "node_modules/json-schema-traverse": { 2536 + "version": "0.4.1", 2537 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2538 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2539 + "dev": true 2540 + }, 2541 + "node_modules/json-stable-stringify-without-jsonify": { 2542 + "version": "1.0.1", 2543 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2544 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2545 + "dev": true 2546 + }, 2547 + "node_modules/keyv": { 2548 + "version": "4.5.4", 2549 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 2550 + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 2551 + "dev": true, 2552 + "dependencies": { 2553 + "json-buffer": "3.0.1" 2554 + } 2555 + }, 2556 + "node_modules/kleur": { 2557 + "version": "4.1.5", 2558 + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 2559 + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 2560 + "engines": { 2561 + "node": ">=6" 2562 + } 2563 + }, 2564 + "node_modules/known-css-properties": { 2565 + "version": "0.35.0", 2566 + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", 2567 + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", 2568 + "dev": true 2569 + }, 2570 + "node_modules/levn": { 2571 + "version": "0.4.1", 2572 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2573 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2574 + "dev": true, 2575 + "dependencies": { 2576 + "prelude-ls": "^1.2.1", 2577 + "type-check": "~0.4.0" 2578 + }, 2579 + "engines": { 2580 + "node": ">= 0.8.0" 2581 + } 2582 + }, 2583 + "node_modules/lightningcss": { 2584 + "version": "1.29.1", 2585 + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz", 2586 + "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==", 2587 + "devOptional": true, 2588 + "dependencies": { 2589 + "detect-libc": "^1.0.3" 2590 + }, 2591 + "engines": { 2592 + "node": ">= 12.0.0" 2593 + }, 2594 + "funding": { 2595 + "type": "opencollective", 2596 + "url": "https://opencollective.com/parcel" 2597 + }, 2598 + "optionalDependencies": { 2599 + "lightningcss-darwin-arm64": "1.29.1", 2600 + "lightningcss-darwin-x64": "1.29.1", 2601 + "lightningcss-freebsd-x64": "1.29.1", 2602 + "lightningcss-linux-arm-gnueabihf": "1.29.1", 2603 + "lightningcss-linux-arm64-gnu": "1.29.1", 2604 + "lightningcss-linux-arm64-musl": "1.29.1", 2605 + "lightningcss-linux-x64-gnu": "1.29.1", 2606 + "lightningcss-linux-x64-musl": "1.29.1", 2607 + "lightningcss-win32-arm64-msvc": "1.29.1", 2608 + "lightningcss-win32-x64-msvc": "1.29.1" 2609 + } 2610 + }, 2611 + "node_modules/lightningcss-darwin-arm64": { 2612 + "version": "1.29.1", 2613 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz", 2614 + "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==", 2615 + "cpu": [ 2616 + "arm64" 2617 + ], 2618 + "optional": true, 2619 + "os": [ 2620 + "darwin" 2621 + ], 2622 + "engines": { 2623 + "node": ">= 12.0.0" 2624 + }, 2625 + "funding": { 2626 + "type": "opencollective", 2627 + "url": "https://opencollective.com/parcel" 2628 + } 2629 + }, 2630 + "node_modules/lightningcss-darwin-x64": { 2631 + "version": "1.29.1", 2632 + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz", 2633 + "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==", 2634 + "cpu": [ 2635 + "x64" 2636 + ], 2637 + "optional": true, 2638 + "os": [ 2639 + "darwin" 2640 + ], 2641 + "engines": { 2642 + "node": ">= 12.0.0" 2643 + }, 2644 + "funding": { 2645 + "type": "opencollective", 2646 + "url": "https://opencollective.com/parcel" 2647 + } 2648 + }, 2649 + "node_modules/lightningcss-freebsd-x64": { 2650 + "version": "1.29.1", 2651 + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz", 2652 + "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==", 2653 + "cpu": [ 2654 + "x64" 2655 + ], 2656 + "optional": true, 2657 + "os": [ 2658 + "freebsd" 2659 + ], 2660 + "engines": { 2661 + "node": ">= 12.0.0" 2662 + }, 2663 + "funding": { 2664 + "type": "opencollective", 2665 + "url": "https://opencollective.com/parcel" 2666 + } 2667 + }, 2668 + "node_modules/lightningcss-linux-arm-gnueabihf": { 2669 + "version": "1.29.1", 2670 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz", 2671 + "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==", 2672 + "cpu": [ 2673 + "arm" 2674 + ], 2675 + "optional": true, 2676 + "os": [ 2677 + "linux" 2678 + ], 2679 + "engines": { 2680 + "node": ">= 12.0.0" 2681 + }, 2682 + "funding": { 2683 + "type": "opencollective", 2684 + "url": "https://opencollective.com/parcel" 2685 + } 2686 + }, 2687 + "node_modules/lightningcss-linux-arm64-gnu": { 2688 + "version": "1.29.1", 2689 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz", 2690 + "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==", 2691 + "cpu": [ 2692 + "arm64" 2693 + ], 2694 + "optional": true, 2695 + "os": [ 2696 + "linux" 2697 + ], 2698 + "engines": { 2699 + "node": ">= 12.0.0" 2700 + }, 2701 + "funding": { 2702 + "type": "opencollective", 2703 + "url": "https://opencollective.com/parcel" 2704 + } 2705 + }, 2706 + "node_modules/lightningcss-linux-arm64-musl": { 2707 + "version": "1.29.1", 2708 + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz", 2709 + "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==", 2710 + "cpu": [ 2711 + "arm64" 2712 + ], 2713 + "optional": true, 2714 + "os": [ 2715 + "linux" 2716 + ], 2717 + "engines": { 2718 + "node": ">= 12.0.0" 2719 + }, 2720 + "funding": { 2721 + "type": "opencollective", 2722 + "url": "https://opencollective.com/parcel" 2723 + } 2724 + }, 2725 + "node_modules/lightningcss-linux-x64-gnu": { 2726 + "version": "1.29.1", 2727 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz", 2728 + "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==", 2729 + "cpu": [ 2730 + "x64" 2731 + ], 2732 + "optional": true, 2733 + "os": [ 2734 + "linux" 2735 + ], 2736 + "engines": { 2737 + "node": ">= 12.0.0" 2738 + }, 2739 + "funding": { 2740 + "type": "opencollective", 2741 + "url": "https://opencollective.com/parcel" 2742 + } 2743 + }, 2744 + "node_modules/lightningcss-linux-x64-musl": { 2745 + "version": "1.29.1", 2746 + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz", 2747 + "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==", 2748 + "cpu": [ 2749 + "x64" 2750 + ], 2751 + "optional": true, 2752 + "os": [ 2753 + "linux" 2754 + ], 2755 + "engines": { 2756 + "node": ">= 12.0.0" 2757 + }, 2758 + "funding": { 2759 + "type": "opencollective", 2760 + "url": "https://opencollective.com/parcel" 2761 + } 2762 + }, 2763 + "node_modules/lightningcss-win32-arm64-msvc": { 2764 + "version": "1.29.1", 2765 + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz", 2766 + "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==", 2767 + "cpu": [ 2768 + "arm64" 2769 + ], 2770 + "optional": true, 2771 + "os": [ 2772 + "win32" 2773 + ], 2774 + "engines": { 2775 + "node": ">= 12.0.0" 2776 + }, 2777 + "funding": { 2778 + "type": "opencollective", 2779 + "url": "https://opencollective.com/parcel" 2780 + } 2781 + }, 2782 + "node_modules/lightningcss-win32-x64-msvc": { 2783 + "version": "1.29.1", 2784 + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz", 2785 + "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==", 2786 + "cpu": [ 2787 + "x64" 2788 + ], 2789 + "optional": true, 2790 + "os": [ 2791 + "win32" 2792 + ], 2793 + "engines": { 2794 + "node": ">= 12.0.0" 2795 + }, 2796 + "funding": { 2797 + "type": "opencollective", 2798 + "url": "https://opencollective.com/parcel" 2799 + } 2800 + }, 2801 + "node_modules/lilconfig": { 2802 + "version": "2.1.0", 2803 + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", 2804 + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 2805 + "dev": true, 2806 + "engines": { 2807 + "node": ">=10" 2808 + } 2809 + }, 2810 + "node_modules/locate-character": { 2811 + "version": "3.0.0", 2812 + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 2813 + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" 2814 + }, 2815 + "node_modules/locate-path": { 2816 + "version": "6.0.0", 2817 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2818 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2819 + "dev": true, 2820 + "dependencies": { 2821 + "p-locate": "^5.0.0" 2822 + }, 2823 + "engines": { 2824 + "node": ">=10" 2825 + }, 2826 + "funding": { 2827 + "url": "https://github.com/sponsors/sindresorhus" 2828 + } 2829 + }, 2830 + "node_modules/lodash.merge": { 2831 + "version": "4.6.2", 2832 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2833 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2834 + "dev": true 2835 + }, 2836 + "node_modules/lru-cache": { 2837 + "version": "10.4.3", 2838 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 2839 + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" 2840 + }, 2841 + "node_modules/magic-string": { 2842 + "version": "0.30.17", 2843 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 2844 + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 2845 + "dependencies": { 2846 + "@jridgewell/sourcemap-codec": "^1.5.0" 2847 + } 2848 + }, 2849 + "node_modules/merge2": { 2850 + "version": "1.4.1", 2851 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2852 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2853 + "dev": true, 2854 + "engines": { 2855 + "node": ">= 8" 2856 + } 2857 + }, 2858 + "node_modules/micromatch": { 2859 + "version": "4.0.8", 2860 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 2861 + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 2862 + "dev": true, 2863 + "dependencies": { 2864 + "braces": "^3.0.3", 2865 + "picomatch": "^2.3.1" 2866 + }, 2867 + "engines": { 2868 + "node": ">=8.6" 2869 + } 2870 + }, 2871 + "node_modules/micromatch/node_modules/picomatch": { 2872 + "version": "2.3.1", 2873 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2874 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2875 + "dev": true, 2876 + "engines": { 2877 + "node": ">=8.6" 2878 + }, 2879 + "funding": { 2880 + "url": "https://github.com/sponsors/jonschlinkert" 2881 + } 2882 + }, 2883 + "node_modules/mini-svg-data-uri": { 2884 + "version": "1.4.4", 2885 + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", 2886 + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", 2887 + "bin": { 2888 + "mini-svg-data-uri": "cli.js" 2889 + } 2890 + }, 2891 + "node_modules/minimatch": { 2892 + "version": "3.1.2", 2893 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2894 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2895 + "dev": true, 2896 + "dependencies": { 2897 + "brace-expansion": "^1.1.7" 2898 + }, 2899 + "engines": { 2900 + "node": "*" 2901 + } 2902 + }, 2903 + "node_modules/mri": { 2904 + "version": "1.2.0", 2905 + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 2906 + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 2907 + "engines": { 2908 + "node": ">=4" 2909 + } 2910 + }, 2911 + "node_modules/mrmime": { 2912 + "version": "2.0.1", 2913 + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", 2914 + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", 2915 + "engines": { 2916 + "node": ">=10" 2917 + } 2918 + }, 2919 + "node_modules/ms": { 2920 + "version": "2.1.3", 2921 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2922 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 2923 + }, 2924 + "node_modules/multiformats": { 2925 + "version": "9.9.0", 2926 + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", 2927 + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" 2928 + }, 2929 + "node_modules/nanoid": { 2930 + "version": "3.3.8", 2931 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 2932 + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 2933 + "funding": [ 2934 + { 2935 + "type": "github", 2936 + "url": "https://github.com/sponsors/ai" 2937 + } 2938 + ], 2939 + "bin": { 2940 + "nanoid": "bin/nanoid.cjs" 2941 + }, 2942 + "engines": { 2943 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2944 + } 2945 + }, 2946 + "node_modules/natural-compare": { 2947 + "version": "1.4.0", 2948 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2949 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2950 + "dev": true 2951 + }, 2952 + "node_modules/optionator": { 2953 + "version": "0.9.4", 2954 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 2955 + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 2956 + "dev": true, 2957 + "dependencies": { 2958 + "deep-is": "^0.1.3", 2959 + "fast-levenshtein": "^2.0.6", 2960 + "levn": "^0.4.1", 2961 + "prelude-ls": "^1.2.1", 2962 + "type-check": "^0.4.0", 2963 + "word-wrap": "^1.2.5" 2964 + }, 2965 + "engines": { 2966 + "node": ">= 0.8.0" 2967 + } 2968 + }, 2969 + "node_modules/p-limit": { 2970 + "version": "3.1.0", 2971 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2972 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2973 + "dev": true, 2974 + "dependencies": { 2975 + "yocto-queue": "^0.1.0" 2976 + }, 2977 + "engines": { 2978 + "node": ">=10" 2979 + }, 2980 + "funding": { 2981 + "url": "https://github.com/sponsors/sindresorhus" 2982 + } 2983 + }, 2984 + "node_modules/p-locate": { 2985 + "version": "5.0.0", 2986 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2987 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2988 + "dev": true, 2989 + "dependencies": { 2990 + "p-limit": "^3.0.2" 2991 + }, 2992 + "engines": { 2993 + "node": ">=10" 2994 + }, 2995 + "funding": { 2996 + "url": "https://github.com/sponsors/sindresorhus" 2997 + } 2998 + }, 2999 + "node_modules/parent-module": { 3000 + "version": "1.0.1", 3001 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3002 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3003 + "dev": true, 3004 + "dependencies": { 3005 + "callsites": "^3.0.0" 3006 + }, 3007 + "engines": { 3008 + "node": ">=6" 3009 + } 3010 + }, 3011 + "node_modules/path-exists": { 3012 + "version": "4.0.0", 3013 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3014 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3015 + "dev": true, 3016 + "engines": { 3017 + "node": ">=8" 3018 + } 3019 + }, 3020 + "node_modules/path-key": { 3021 + "version": "3.1.1", 3022 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3023 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3024 + "dev": true, 3025 + "engines": { 3026 + "node": ">=8" 3027 + } 3028 + }, 3029 + "node_modules/picocolors": { 3030 + "version": "1.1.1", 3031 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 3032 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" 3033 + }, 3034 + "node_modules/picomatch": { 3035 + "version": "4.0.2", 3036 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 3037 + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 3038 + "dev": true, 3039 + "optional": true, 3040 + "peer": true, 3041 + "engines": { 3042 + "node": ">=12" 3043 + }, 3044 + "funding": { 3045 + "url": "https://github.com/sponsors/jonschlinkert" 3046 + } 3047 + }, 3048 + "node_modules/postcss": { 3049 + "version": "8.5.3", 3050 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", 3051 + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", 3052 + "funding": [ 3053 + { 3054 + "type": "opencollective", 3055 + "url": "https://opencollective.com/postcss/" 3056 + }, 3057 + { 3058 + "type": "tidelift", 3059 + "url": "https://tidelift.com/funding/github/npm/postcss" 3060 + }, 3061 + { 3062 + "type": "github", 3063 + "url": "https://github.com/sponsors/ai" 3064 + } 3065 + ], 3066 + "dependencies": { 3067 + "nanoid": "^3.3.8", 3068 + "picocolors": "^1.1.1", 3069 + "source-map-js": "^1.2.1" 3070 + }, 3071 + "engines": { 3072 + "node": "^10 || ^12 || >=14" 3073 + } 3074 + }, 3075 + "node_modules/postcss-load-config": { 3076 + "version": "3.1.4", 3077 + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 3078 + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 3079 + "dev": true, 3080 + "dependencies": { 3081 + "lilconfig": "^2.0.5", 3082 + "yaml": "^1.10.2" 3083 + }, 3084 + "engines": { 3085 + "node": ">= 10" 3086 + }, 3087 + "funding": { 3088 + "type": "opencollective", 3089 + "url": "https://opencollective.com/postcss/" 3090 + }, 3091 + "peerDependencies": { 3092 + "postcss": ">=8.0.9", 3093 + "ts-node": ">=9.0.0" 3094 + }, 3095 + "peerDependenciesMeta": { 3096 + "postcss": { 3097 + "optional": true 3098 + }, 3099 + "ts-node": { 3100 + "optional": true 3101 + } 3102 + } 3103 + }, 3104 + "node_modules/postcss-load-config/node_modules/yaml": { 3105 + "version": "1.10.2", 3106 + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 3107 + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 3108 + "dev": true, 3109 + "engines": { 3110 + "node": ">= 6" 3111 + } 3112 + }, 3113 + "node_modules/postcss-safe-parser": { 3114 + "version": "6.0.0", 3115 + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", 3116 + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", 3117 + "dev": true, 3118 + "engines": { 3119 + "node": ">=12.0" 3120 + }, 3121 + "funding": { 3122 + "type": "opencollective", 3123 + "url": "https://opencollective.com/postcss/" 3124 + }, 3125 + "peerDependencies": { 3126 + "postcss": "^8.3.3" 3127 + } 3128 + }, 3129 + "node_modules/postcss-scss": { 3130 + "version": "4.0.9", 3131 + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", 3132 + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", 3133 + "dev": true, 3134 + "funding": [ 3135 + { 3136 + "type": "opencollective", 3137 + "url": "https://opencollective.com/postcss/" 3138 + }, 3139 + { 3140 + "type": "tidelift", 3141 + "url": "https://tidelift.com/funding/github/npm/postcss-scss" 3142 + }, 3143 + { 3144 + "type": "github", 3145 + "url": "https://github.com/sponsors/ai" 3146 + } 3147 + ], 3148 + "engines": { 3149 + "node": ">=12.0" 3150 + }, 3151 + "peerDependencies": { 3152 + "postcss": "^8.4.29" 3153 + } 3154 + }, 3155 + "node_modules/postcss-selector-parser": { 3156 + "version": "6.1.2", 3157 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", 3158 + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", 3159 + "dev": true, 3160 + "dependencies": { 3161 + "cssesc": "^3.0.0", 3162 + "util-deprecate": "^1.0.2" 3163 + }, 3164 + "engines": { 3165 + "node": ">=4" 3166 + } 3167 + }, 3168 + "node_modules/prelude-ls": { 3169 + "version": "1.2.1", 3170 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3171 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3172 + "dev": true, 3173 + "engines": { 3174 + "node": ">= 0.8.0" 3175 + } 3176 + }, 3177 + "node_modules/prettier": { 3178 + "version": "3.5.2", 3179 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", 3180 + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", 3181 + "dev": true, 3182 + "bin": { 3183 + "prettier": "bin/prettier.cjs" 3184 + }, 3185 + "engines": { 3186 + "node": ">=14" 3187 + }, 3188 + "funding": { 3189 + "url": "https://github.com/prettier/prettier?sponsor=1" 3190 + } 3191 + }, 3192 + "node_modules/prettier-plugin-svelte": { 3193 + "version": "3.3.3", 3194 + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.3.tgz", 3195 + "integrity": "sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==", 3196 + "dev": true, 3197 + "peerDependencies": { 3198 + "prettier": "^3.0.0", 3199 + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" 3200 + } 3201 + }, 3202 + "node_modules/prettier-plugin-tailwindcss": { 3203 + "version": "0.6.11", 3204 + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", 3205 + "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", 3206 + "dev": true, 3207 + "engines": { 3208 + "node": ">=14.21.3" 3209 + }, 3210 + "peerDependencies": { 3211 + "@ianvs/prettier-plugin-sort-imports": "*", 3212 + "@prettier/plugin-pug": "*", 3213 + "@shopify/prettier-plugin-liquid": "*", 3214 + "@trivago/prettier-plugin-sort-imports": "*", 3215 + "@zackad/prettier-plugin-twig": "*", 3216 + "prettier": "^3.0", 3217 + "prettier-plugin-astro": "*", 3218 + "prettier-plugin-css-order": "*", 3219 + "prettier-plugin-import-sort": "*", 3220 + "prettier-plugin-jsdoc": "*", 3221 + "prettier-plugin-marko": "*", 3222 + "prettier-plugin-multiline-arrays": "*", 3223 + "prettier-plugin-organize-attributes": "*", 3224 + "prettier-plugin-organize-imports": "*", 3225 + "prettier-plugin-sort-imports": "*", 3226 + "prettier-plugin-style-order": "*", 3227 + "prettier-plugin-svelte": "*" 3228 + }, 3229 + "peerDependenciesMeta": { 3230 + "@ianvs/prettier-plugin-sort-imports": { 3231 + "optional": true 3232 + }, 3233 + "@prettier/plugin-pug": { 3234 + "optional": true 3235 + }, 3236 + "@shopify/prettier-plugin-liquid": { 3237 + "optional": true 3238 + }, 3239 + "@trivago/prettier-plugin-sort-imports": { 3240 + "optional": true 3241 + }, 3242 + "@zackad/prettier-plugin-twig": { 3243 + "optional": true 3244 + }, 3245 + "prettier-plugin-astro": { 3246 + "optional": true 3247 + }, 3248 + "prettier-plugin-css-order": { 3249 + "optional": true 3250 + }, 3251 + "prettier-plugin-import-sort": { 3252 + "optional": true 3253 + }, 3254 + "prettier-plugin-jsdoc": { 3255 + "optional": true 3256 + }, 3257 + "prettier-plugin-marko": { 3258 + "optional": true 3259 + }, 3260 + "prettier-plugin-multiline-arrays": { 3261 + "optional": true 3262 + }, 3263 + "prettier-plugin-organize-attributes": { 3264 + "optional": true 3265 + }, 3266 + "prettier-plugin-organize-imports": { 3267 + "optional": true 3268 + }, 3269 + "prettier-plugin-sort-imports": { 3270 + "optional": true 3271 + }, 3272 + "prettier-plugin-style-order": { 3273 + "optional": true 3274 + }, 3275 + "prettier-plugin-svelte": { 3276 + "optional": true 3277 + } 3278 + } 3279 + }, 3280 + "node_modules/punycode": { 3281 + "version": "2.3.1", 3282 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 3283 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 3284 + "dev": true, 3285 + "engines": { 3286 + "node": ">=6" 3287 + } 3288 + }, 3289 + "node_modules/queue-microtask": { 3290 + "version": "1.2.3", 3291 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3292 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3293 + "dev": true, 3294 + "funding": [ 3295 + { 3296 + "type": "github", 3297 + "url": "https://github.com/sponsors/feross" 3298 + }, 3299 + { 3300 + "type": "patreon", 3301 + "url": "https://www.patreon.com/feross" 3302 + }, 3303 + { 3304 + "type": "consulting", 3305 + "url": "https://feross.org/support" 3306 + } 3307 + ] 3308 + }, 3309 + "node_modules/readdirp": { 3310 + "version": "4.1.2", 3311 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 3312 + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 3313 + "dev": true, 3314 + "engines": { 3315 + "node": ">= 14.18.0" 3316 + }, 3317 + "funding": { 3318 + "type": "individual", 3319 + "url": "https://paulmillr.com/funding/" 3320 + } 3321 + }, 3322 + "node_modules/resolve-from": { 3323 + "version": "4.0.0", 3324 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3325 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3326 + "dev": true, 3327 + "engines": { 3328 + "node": ">=4" 3329 + } 3330 + }, 3331 + "node_modules/reusify": { 3332 + "version": "1.0.4", 3333 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3334 + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3335 + "dev": true, 3336 + "engines": { 3337 + "iojs": ">=1.0.0", 3338 + "node": ">=0.10.0" 3339 + } 3340 + }, 3341 + "node_modules/rollup": { 3342 + "version": "4.34.8", 3343 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", 3344 + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", 3345 + "dependencies": { 3346 + "@types/estree": "1.0.6" 3347 + }, 3348 + "bin": { 3349 + "rollup": "dist/bin/rollup" 3350 + }, 3351 + "engines": { 3352 + "node": ">=18.0.0", 3353 + "npm": ">=8.0.0" 3354 + }, 3355 + "optionalDependencies": { 3356 + "@rollup/rollup-android-arm-eabi": "4.34.8", 3357 + "@rollup/rollup-android-arm64": "4.34.8", 3358 + "@rollup/rollup-darwin-arm64": "4.34.8", 3359 + "@rollup/rollup-darwin-x64": "4.34.8", 3360 + "@rollup/rollup-freebsd-arm64": "4.34.8", 3361 + "@rollup/rollup-freebsd-x64": "4.34.8", 3362 + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", 3363 + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", 3364 + "@rollup/rollup-linux-arm64-gnu": "4.34.8", 3365 + "@rollup/rollup-linux-arm64-musl": "4.34.8", 3366 + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", 3367 + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", 3368 + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", 3369 + "@rollup/rollup-linux-s390x-gnu": "4.34.8", 3370 + "@rollup/rollup-linux-x64-gnu": "4.34.8", 3371 + "@rollup/rollup-linux-x64-musl": "4.34.8", 3372 + "@rollup/rollup-win32-arm64-msvc": "4.34.8", 3373 + "@rollup/rollup-win32-ia32-msvc": "4.34.8", 3374 + "@rollup/rollup-win32-x64-msvc": "4.34.8", 3375 + "fsevents": "~2.3.2" 3376 + } 3377 + }, 3378 + "node_modules/run-parallel": { 3379 + "version": "1.2.0", 3380 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3381 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3382 + "dev": true, 3383 + "funding": [ 3384 + { 3385 + "type": "github", 3386 + "url": "https://github.com/sponsors/feross" 3387 + }, 3388 + { 3389 + "type": "patreon", 3390 + "url": "https://www.patreon.com/feross" 3391 + }, 3392 + { 3393 + "type": "consulting", 3394 + "url": "https://feross.org/support" 3395 + } 3396 + ], 3397 + "dependencies": { 3398 + "queue-microtask": "^1.2.2" 3399 + } 3400 + }, 3401 + "node_modules/sade": { 3402 + "version": "1.8.1", 3403 + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 3404 + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 3405 + "dependencies": { 3406 + "mri": "^1.1.0" 3407 + }, 3408 + "engines": { 3409 + "node": ">=6" 3410 + } 3411 + }, 3412 + "node_modules/semver": { 3413 + "version": "7.7.1", 3414 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 3415 + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 3416 + "dev": true, 3417 + "bin": { 3418 + "semver": "bin/semver.js" 3419 + }, 3420 + "engines": { 3421 + "node": ">=10" 3422 + } 3423 + }, 3424 + "node_modules/set-cookie-parser": { 3425 + "version": "2.7.1", 3426 + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", 3427 + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" 3428 + }, 3429 + "node_modules/shebang-command": { 3430 + "version": "2.0.0", 3431 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3432 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3433 + "dev": true, 3434 + "dependencies": { 3435 + "shebang-regex": "^3.0.0" 3436 + }, 3437 + "engines": { 3438 + "node": ">=8" 3439 + } 3440 + }, 3441 + "node_modules/shebang-regex": { 3442 + "version": "3.0.0", 3443 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3444 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3445 + "dev": true, 3446 + "engines": { 3447 + "node": ">=8" 3448 + } 3449 + }, 3450 + "node_modules/sirv": { 3451 + "version": "3.0.1", 3452 + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", 3453 + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", 3454 + "dependencies": { 3455 + "@polka/url": "^1.0.0-next.24", 3456 + "mrmime": "^2.0.0", 3457 + "totalist": "^3.0.0" 3458 + }, 3459 + "engines": { 3460 + "node": ">=18" 3461 + } 3462 + }, 3463 + "node_modules/source-map-js": { 3464 + "version": "1.2.1", 3465 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 3466 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 3467 + "engines": { 3468 + "node": ">=0.10.0" 3469 + } 3470 + }, 3471 + "node_modules/strip-json-comments": { 3472 + "version": "3.1.1", 3473 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3474 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3475 + "dev": true, 3476 + "engines": { 3477 + "node": ">=8" 3478 + }, 3479 + "funding": { 3480 + "url": "https://github.com/sponsors/sindresorhus" 3481 + } 3482 + }, 3483 + "node_modules/supports-color": { 3484 + "version": "7.2.0", 3485 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3486 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3487 + "dev": true, 3488 + "dependencies": { 3489 + "has-flag": "^4.0.0" 3490 + }, 3491 + "engines": { 3492 + "node": ">=8" 3493 + } 3494 + }, 3495 + "node_modules/svelte": { 3496 + "version": "5.20.2", 3497 + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.20.2.tgz", 3498 + "integrity": "sha512-aYXJreNUiyTob0QOzRZeBXZMGeFZDch6SrSRV8QTncZb6zj0O3BEdUzPpojuHQ1pTvk+KX7I6rZCXPUf8pTPxA==", 3499 + "dependencies": { 3500 + "@ampproject/remapping": "^2.3.0", 3501 + "@jridgewell/sourcemap-codec": "^1.5.0", 3502 + "@types/estree": "^1.0.5", 3503 + "acorn": "^8.12.1", 3504 + "acorn-typescript": "^1.4.13", 3505 + "aria-query": "^5.3.1", 3506 + "axobject-query": "^4.1.0", 3507 + "clsx": "^2.1.1", 3508 + "esm-env": "^1.2.1", 3509 + "esrap": "^1.4.3", 3510 + "is-reference": "^3.0.3", 3511 + "locate-character": "^3.0.0", 3512 + "magic-string": "^0.30.11", 3513 + "zimmerframe": "^1.1.2" 3514 + }, 3515 + "engines": { 3516 + "node": ">=18" 3517 + } 3518 + }, 3519 + "node_modules/svelte-check": { 3520 + "version": "4.1.4", 3521 + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.4.tgz", 3522 + "integrity": "sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==", 3523 + "dev": true, 3524 + "dependencies": { 3525 + "@jridgewell/trace-mapping": "^0.3.25", 3526 + "chokidar": "^4.0.1", 3527 + "fdir": "^6.2.0", 3528 + "picocolors": "^1.0.0", 3529 + "sade": "^1.7.4" 3530 + }, 3531 + "bin": { 3532 + "svelte-check": "bin/svelte-check" 3533 + }, 3534 + "engines": { 3535 + "node": ">= 18.0.0" 3536 + }, 3537 + "peerDependencies": { 3538 + "svelte": "^4.0.0 || ^5.0.0-next.0", 3539 + "typescript": ">=5.0.0" 3540 + } 3541 + }, 3542 + "node_modules/svelte-eslint-parser": { 3543 + "version": "0.43.0", 3544 + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.43.0.tgz", 3545 + "integrity": "sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==", 3546 + "dev": true, 3547 + "dependencies": { 3548 + "eslint-scope": "^7.2.2", 3549 + "eslint-visitor-keys": "^3.4.3", 3550 + "espree": "^9.6.1", 3551 + "postcss": "^8.4.39", 3552 + "postcss-scss": "^4.0.9" 3553 + }, 3554 + "engines": { 3555 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3556 + }, 3557 + "funding": { 3558 + "url": "https://github.com/sponsors/ota-meshi" 3559 + }, 3560 + "peerDependencies": { 3561 + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" 3562 + }, 3563 + "peerDependenciesMeta": { 3564 + "svelte": { 3565 + "optional": true 3566 + } 3567 + } 3568 + }, 3569 + "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { 3570 + "version": "7.2.2", 3571 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 3572 + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 3573 + "dev": true, 3574 + "dependencies": { 3575 + "esrecurse": "^4.3.0", 3576 + "estraverse": "^5.2.0" 3577 + }, 3578 + "engines": { 3579 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3580 + }, 3581 + "funding": { 3582 + "url": "https://opencollective.com/eslint" 3583 + } 3584 + }, 3585 + "node_modules/svelte-eslint-parser/node_modules/eslint-visitor-keys": { 3586 + "version": "3.4.3", 3587 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 3588 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 3589 + "dev": true, 3590 + "engines": { 3591 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3592 + }, 3593 + "funding": { 3594 + "url": "https://opencollective.com/eslint" 3595 + } 3596 + }, 3597 + "node_modules/svelte-eslint-parser/node_modules/espree": { 3598 + "version": "9.6.1", 3599 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 3600 + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 3601 + "dev": true, 3602 + "dependencies": { 3603 + "acorn": "^8.9.0", 3604 + "acorn-jsx": "^5.3.2", 3605 + "eslint-visitor-keys": "^3.4.1" 3606 + }, 3607 + "engines": { 3608 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 3609 + }, 3610 + "funding": { 3611 + "url": "https://opencollective.com/eslint" 3612 + } 3613 + }, 3614 + "node_modules/tailwindcss": { 3615 + "version": "4.0.8", 3616 + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.8.tgz", 3617 + "integrity": "sha512-Me7N5CKR+D2A1xdWA5t5+kjjT7bwnxZOE6/yDI/ixJdJokszsn2n++mdU5yJwrsTpqFX2B9ZNMBJDwcqk9C9lw==" 3618 + }, 3619 + "node_modules/tapable": { 3620 + "version": "2.2.1", 3621 + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 3622 + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 3623 + "dev": true, 3624 + "engines": { 3625 + "node": ">=6" 3626 + } 3627 + }, 3628 + "node_modules/tlds": { 3629 + "version": "1.255.0", 3630 + "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.255.0.tgz", 3631 + "integrity": "sha512-tcwMRIioTcF/FcxLev8MJWxCp+GUALRhFEqbDoZrnowmKSGqPrl5pqS+Sut2m8BgJ6S4FExCSSpGffZ0Tks6Aw==", 3632 + "bin": { 3633 + "tlds": "bin.js" 3634 + } 3635 + }, 3636 + "node_modules/to-regex-range": { 3637 + "version": "5.0.1", 3638 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3639 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3640 + "dev": true, 3641 + "dependencies": { 3642 + "is-number": "^7.0.0" 3643 + }, 3644 + "engines": { 3645 + "node": ">=8.0" 3646 + } 3647 + }, 3648 + "node_modules/totalist": { 3649 + "version": "3.0.1", 3650 + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", 3651 + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", 3652 + "engines": { 3653 + "node": ">=6" 3654 + } 3655 + }, 3656 + "node_modules/ts-api-utils": { 3657 + "version": "2.0.1", 3658 + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", 3659 + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", 3660 + "dev": true, 3661 + "engines": { 3662 + "node": ">=18.12" 3663 + }, 3664 + "peerDependencies": { 3665 + "typescript": ">=4.8.4" 3666 + } 3667 + }, 3668 + "node_modules/type-check": { 3669 + "version": "0.4.0", 3670 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3671 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3672 + "dev": true, 3673 + "dependencies": { 3674 + "prelude-ls": "^1.2.1" 3675 + }, 3676 + "engines": { 3677 + "node": ">= 0.8.0" 3678 + } 3679 + }, 3680 + "node_modules/typescript": { 3681 + "version": "5.7.3", 3682 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", 3683 + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", 3684 + "dev": true, 3685 + "bin": { 3686 + "tsc": "bin/tsc", 3687 + "tsserver": "bin/tsserver" 3688 + }, 3689 + "engines": { 3690 + "node": ">=14.17" 3691 + } 3692 + }, 3693 + "node_modules/typescript-eslint": { 3694 + "version": "8.24.1", 3695 + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.1.tgz", 3696 + "integrity": "sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==", 3697 + "dev": true, 3698 + "dependencies": { 3699 + "@typescript-eslint/eslint-plugin": "8.24.1", 3700 + "@typescript-eslint/parser": "8.24.1", 3701 + "@typescript-eslint/utils": "8.24.1" 3702 + }, 3703 + "engines": { 3704 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 3705 + }, 3706 + "funding": { 3707 + "type": "opencollective", 3708 + "url": "https://opencollective.com/typescript-eslint" 3709 + }, 3710 + "peerDependencies": { 3711 + "eslint": "^8.57.0 || ^9.0.0", 3712 + "typescript": ">=4.8.4 <5.8.0" 3713 + } 3714 + }, 3715 + "node_modules/uint8arrays": { 3716 + "version": "3.0.0", 3717 + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", 3718 + "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", 3719 + "dependencies": { 3720 + "multiformats": "^9.4.2" 3721 + } 3722 + }, 3723 + "node_modules/uri-js": { 3724 + "version": "4.4.1", 3725 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3726 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3727 + "dev": true, 3728 + "dependencies": { 3729 + "punycode": "^2.1.0" 3730 + } 3731 + }, 3732 + "node_modules/util-deprecate": { 3733 + "version": "1.0.2", 3734 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3735 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 3736 + "dev": true 3737 + }, 3738 + "node_modules/vite": { 3739 + "version": "6.1.1", 3740 + "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.1.tgz", 3741 + "integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==", 3742 + "dependencies": { 3743 + "esbuild": "^0.24.2", 3744 + "postcss": "^8.5.2", 3745 + "rollup": "^4.30.1" 3746 + }, 3747 + "bin": { 3748 + "vite": "bin/vite.js" 3749 + }, 3750 + "engines": { 3751 + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 3752 + }, 3753 + "funding": { 3754 + "url": "https://github.com/vitejs/vite?sponsor=1" 3755 + }, 3756 + "optionalDependencies": { 3757 + "fsevents": "~2.3.3" 3758 + }, 3759 + "peerDependencies": { 3760 + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 3761 + "jiti": ">=1.21.0", 3762 + "less": "*", 3763 + "lightningcss": "^1.21.0", 3764 + "sass": "*", 3765 + "sass-embedded": "*", 3766 + "stylus": "*", 3767 + "sugarss": "*", 3768 + "terser": "^5.16.0", 3769 + "tsx": "^4.8.1", 3770 + "yaml": "^2.4.2" 3771 + }, 3772 + "peerDependenciesMeta": { 3773 + "@types/node": { 3774 + "optional": true 3775 + }, 3776 + "jiti": { 3777 + "optional": true 3778 + }, 3779 + "less": { 3780 + "optional": true 3781 + }, 3782 + "lightningcss": { 3783 + "optional": true 3784 + }, 3785 + "sass": { 3786 + "optional": true 3787 + }, 3788 + "sass-embedded": { 3789 + "optional": true 3790 + }, 3791 + "stylus": { 3792 + "optional": true 3793 + }, 3794 + "sugarss": { 3795 + "optional": true 3796 + }, 3797 + "terser": { 3798 + "optional": true 3799 + }, 3800 + "tsx": { 3801 + "optional": true 3802 + }, 3803 + "yaml": { 3804 + "optional": true 3805 + } 3806 + } 3807 + }, 3808 + "node_modules/vitefu": { 3809 + "version": "1.0.5", 3810 + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.5.tgz", 3811 + "integrity": "sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==", 3812 + "peerDependencies": { 3813 + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" 3814 + }, 3815 + "peerDependenciesMeta": { 3816 + "vite": { 3817 + "optional": true 3818 + } 3819 + } 3820 + }, 3821 + "node_modules/which": { 3822 + "version": "2.0.2", 3823 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3824 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3825 + "dev": true, 3826 + "dependencies": { 3827 + "isexe": "^2.0.0" 3828 + }, 3829 + "bin": { 3830 + "node-which": "bin/node-which" 3831 + }, 3832 + "engines": { 3833 + "node": ">= 8" 3834 + } 3835 + }, 3836 + "node_modules/word-wrap": { 3837 + "version": "1.2.5", 3838 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3839 + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3840 + "dev": true, 3841 + "engines": { 3842 + "node": ">=0.10.0" 3843 + } 3844 + }, 3845 + "node_modules/yaml": { 3846 + "version": "2.7.0", 3847 + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", 3848 + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", 3849 + "optional": true, 3850 + "peer": true, 3851 + "bin": { 3852 + "yaml": "bin.mjs" 3853 + }, 3854 + "engines": { 3855 + "node": ">= 14" 3856 + } 3857 + }, 3858 + "node_modules/yocto-queue": { 3859 + "version": "0.1.0", 3860 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3861 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3862 + "dev": true, 3863 + "engines": { 3864 + "node": ">=10" 3865 + }, 3866 + "funding": { 3867 + "url": "https://github.com/sponsors/sindresorhus" 3868 + } 3869 + }, 3870 + "node_modules/zimmerframe": { 3871 + "version": "1.1.2", 3872 + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", 3873 + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==" 3874 + }, 3875 + "node_modules/zod": { 3876 + "version": "3.24.2", 3877 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", 3878 + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", 3879 + "funding": { 3880 + "url": "https://github.com/sponsors/colinhacks" 3881 + } 3882 + } 3883 + } 3884 + }
+43
package.json
···
··· 1 + { 2 + "name": "svelte-atproto-client-oauth", 3 + "private": true, 4 + "version": "0.0.1", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite dev", 8 + "build": "vite build", 9 + "preview": "vite preview", 10 + "prepare": "svelte-kit sync || echo ''", 11 + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 12 + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 13 + "format": "prettier --write .", 14 + "lint": "prettier --check . && eslint ." 15 + }, 16 + "devDependencies": { 17 + "@eslint/compat": "^1.2.5", 18 + "@eslint/js": "^9.18.0", 19 + "@sveltejs/adapter-auto": "^4.0.0", 20 + "@sveltejs/kit": "^2.16.0", 21 + "@sveltejs/vite-plugin-svelte": "^5.0.0", 22 + "@tailwindcss/vite": "^4.0.0", 23 + "eslint": "^9.18.0", 24 + "eslint-config-prettier": "^10.0.1", 25 + "eslint-plugin-svelte": "^2.46.1", 26 + "globals": "^15.14.0", 27 + "prettier": "^3.4.2", 28 + "prettier-plugin-svelte": "^3.3.3", 29 + "prettier-plugin-tailwindcss": "^0.6.11", 30 + "svelte": "^5.0.0", 31 + "svelte-check": "^4.0.0", 32 + "tailwindcss": "^4.0.0", 33 + "typescript": "^5.0.0", 34 + "typescript-eslint": "^8.20.0", 35 + "vite": "^6.0.0" 36 + }, 37 + "dependencies": { 38 + "@atproto/api": "^0.14.4", 39 + "@atproto/oauth-client-browser": "^0.3.10", 40 + "@sveltejs/adapter-static": "^3.0.8", 41 + "@tailwindcss/forms": "^0.5.10" 42 + } 43 + }
+5
src/app.css
···
··· 1 + @import 'tailwindcss'; 2 + 3 + @plugin '@tailwindcss/forms'; 4 + 5 + @custom-variant dark (&:where(.dark, .dark *));
+13
src/app.d.ts
···
··· 1 + // See https://svelte.dev/docs/kit/types#app.d.ts 2 + // for information about these interfaces 3 + declare global { 4 + namespace App { 5 + // interface Error {} 6 + // interface Locals {} 7 + // interface PageData {} 8 + // interface PageState {} 9 + // interface Platform {} 10 + } 11 + } 12 + 13 + export {};
+12
src/app.html
···
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="utf-8" /> 5 + <link rel="icon" href="%sveltekit.assets%/favicon.png" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 7 + %sveltekit.head% 8 + </head> 9 + <body data-sveltekit-preload-data="hover"> 10 + <div style="display: contents">%sveltekit.body%</div> 11 + </body> 12 + </html>
+21
src/lib/UI/Button.svelte
···
··· 1 + <script lang="ts"> 2 + import type { HTMLButtonAttributes } from 'svelte/elements'; 3 + 4 + type Props = HTMLButtonAttributes & { 5 + children: () => any; 6 + }; 7 + 8 + let { children, class: className, ...props }: Props = $props(); 9 + </script> 10 + 11 + <button 12 + class={[ 13 + 'bg-rose-600 text-white hover:bg-rose-500 focus-visible:outline-rose-600', 14 + 'inline-flex cursor-pointer justify-center rounded-full px-3 py-2 text-sm font-semibold shadow-sm focus-visible:outline focus-visible:outline-offset-2', 15 + 'disabled:cursor-not-allowed disabled:opacity-50', 16 + className 17 + ]} 18 + {...props} 19 + > 20 + {@render children()} 21 + </button>
+15
src/lib/UI/Input.svelte
···
··· 1 + <script lang="ts"> 2 + import type { HTMLInputAttributes } from 'svelte/elements'; 3 + 4 + type Props = HTMLInputAttributes & { 5 + value?: string; 6 + }; 7 + 8 + let { value = $bindable(), ...props }: Props = $props(); 9 + </script> 10 + 11 + <input 12 + bind:value 13 + class="block w-full rounded-full border-0 py-1.5 text-neutral-900 shadow-sm ring-1 ring-neutral-300 ring-inset placeholder:text-neutral-400 focus:ring-2 focus:ring-rose-600 focus:ring-inset sm:text-sm/6 dark:bg-neutral-950 dark:text-neutral-100 dark:ring-neutral-700 dark:placeholder:text-neutral-600" 14 + {...props} 15 + />
+100
src/lib/UI/LoginModal.svelte
···
··· 1 + <script lang="ts"> 2 + import { showLoginModal } from '$lib/state.svelte'; 3 + import { trySignIn } from '$lib/auth.svelte'; 4 + import Input from './Input.svelte'; 5 + import Button from './Button.svelte'; 6 + import { tick } from 'svelte'; 7 + 8 + let value = $state(''); 9 + let error: string | null = $state(null); 10 + let loading = $state(false); 11 + 12 + async function onSubmit(event: Event) { 13 + event.preventDefault(); 14 + if (loading) return; 15 + 16 + error = null; 17 + loading = true; 18 + 19 + try { 20 + await trySignIn(value); 21 + } catch (err) { 22 + error = err instanceof Error ? err.message : String(err); 23 + } finally { 24 + loading = false; 25 + } 26 + } 27 + 28 + let input: HTMLInputElement | undefined = $state(); 29 + 30 + $effect(() => { 31 + if (!showLoginModal.visible) { 32 + error = null; 33 + value = ''; 34 + loading = false; 35 + } else { 36 + tick().then(() => { 37 + input?.focus(); 38 + }); 39 + } 40 + }); 41 + </script> 42 + 43 + {#if showLoginModal.visible} 44 + <div 45 + class="fixed inset-0 z-[100] w-screen overflow-y-auto" 46 + aria-labelledby="modal-title" 47 + role="dialog" 48 + aria-modal="true" 49 + > 50 + <div 51 + class="fixed inset-0 bg-neutral-50/90 backdrop-blur-sm transition-opacity dark:bg-neutral-950/90" 52 + onclick={() => (showLoginModal.visible = false)} 53 + aria-hidden="true" 54 + ></div> 55 + 56 + <div class="pointer-events-none fixed inset-0 z-10 w-screen overflow-y-auto"> 57 + <div 58 + class="flex min-h-full w-screen items-end justify-center p-4 text-center sm:items-center sm:p-0" 59 + > 60 + <div 61 + class="pointer-events-auto relative w-full transform overflow-hidden rounded-2xl border border-neutral-200 bg-neutral-100 px-4 pt-4 pb-4 text-left shadow-xl transition-all sm:my-8 sm:max-w-sm sm:p-6 dark:border-neutral-700 dark:bg-neutral-800" 62 + > 63 + <h3 class="font-semibold text-neutral-900 dark:text-neutral-100" id="modal-title"> 64 + Login With Bluesky 65 + </h3> 66 + <form onsubmit={onSubmit} class="mt-2 flex w-full flex-col gap-2"> 67 + <div class="w-full"> 68 + <label 69 + for="bluesky-handle" 70 + class="block text-sm/6 font-medium text-neutral-900 dark:text-neutral-100" 71 + >Handle</label 72 + > 73 + <div class="mt-2"> 74 + <input 75 + bind:this={input} 76 + type="text" 77 + name="bluesky-handle" 78 + id="bluesky-handle" 79 + placeholder="yourname.bsky.social" 80 + bind:value 81 + class="block w-full rounded-full border-0 py-1.5 text-neutral-900 caret-rose-500 shadow-sm ring-1 ring-neutral-300 ring-inset placeholder:text-neutral-400 focus:ring-2 focus:ring-rose-600 focus:ring-inset sm:text-sm/6 dark:bg-neutral-950 dark:text-neutral-100 dark:ring-neutral-700 dark:placeholder:text-neutral-600" 82 + /> 83 + </div> 84 + </div> 85 + 86 + {#if error} 87 + <p class="text-sm font-semibold text-rose-500">{error}</p> 88 + {/if} 89 + 90 + <div class="mt-5 sm:mt-6"> 91 + <Button type="submit" disabled={loading} class="w-full" 92 + >{loading ? 'Loading...' : 'Login'}</Button 93 + > 94 + </div> 95 + </form> 96 + </div> 97 + </div> 98 + </div> 99 + </div> 100 + {/if}
+96
src/lib/auth.svelte.ts
···
··· 1 + import type { BrowserOAuthClient, OAuthSession } from '@atproto/oauth-client-browser'; 2 + import type { Agent } from '@atproto/api'; 3 + 4 + const { MODE } = import.meta.env; 5 + 6 + export const HANDLE_RESOLVER_URL = 'https://bsky.social'; 7 + export const PLC_DIRECTORY_URL = undefined; 8 + 9 + export const BASE_PATH = '/svelte-atproto-client-oauth'; 10 + 11 + export const data = $state({ 12 + agent: null as Agent | null, 13 + session: null as OAuthSession | null, 14 + client: null as BrowserOAuthClient | null, 15 + isInitializing: true 16 + }); 17 + 18 + let oauthClient: BrowserOAuthClient | null = null; 19 + 20 + export async function initOAuthClient() { 21 + // Dynamically import the module on the client side 22 + const { BrowserOAuthClient } = await import('@atproto/oauth-client-browser'); 23 + const { Agent } = await import('@atproto/api'); 24 + 25 + const clientId = `http://localhost?${new URLSearchParams({ 26 + scope: 'atproto transition:generic', 27 + redirect_uri: Object.assign(new URL(window.location.origin), { 28 + hostname: '[::1]' 29 + }).href 30 + })}`; 31 + 32 + oauthClient = await BrowserOAuthClient.load({ 33 + clientId, 34 + handleResolver: HANDLE_RESOLVER_URL, 35 + plcDirectoryUrl: PLC_DIRECTORY_URL, 36 + allowHttp: MODE === 'development' || MODE === 'test' 37 + }); 38 + 39 + data.client = oauthClient; 40 + 41 + try { 42 + const initResult = await oauthClient.init(); 43 + if (initResult) { 44 + data.session = initResult.session; 45 + data.agent = new Agent(initResult.session); 46 + } 47 + } catch (err) { 48 + console.error('Failed to initialize OAuth client:', err); 49 + } finally { 50 + data.isInitializing = false; 51 + } 52 + } 53 + 54 + export async function trySignIn(value: string) { 55 + if (value.startsWith('did:')) { 56 + if (value.length > 5) await signIn(value); 57 + else throw new Error('DID must be at least 6 characters'); 58 + } else if (value.startsWith('https://') || value.startsWith('http://')) { 59 + const url = new URL(value); 60 + if (value !== url.origin) throw new Error('PDS URL must be an origin'); 61 + await signIn(value); 62 + } else if (value.includes('.') && value.length > 3) { 63 + const handle = value.startsWith('@') ? value.slice(1) : value; 64 + if (handle.length > 3) await signIn(handle); 65 + else throw new Error('Handle must be at least 4 characters'); 66 + } else if (value.length > 3) { 67 + const handle = (value.startsWith('@') ? value.slice(1) : value) + '.bsky.social'; 68 + await signIn(handle); 69 + } else { 70 + throw new Error('Please provide a valid handle, DID, or PDS URL'); 71 + } 72 + } 73 + 74 + export async function signIn(input: string) { 75 + if (!oauthClient) throw new Error('OAuth client not initialized'); 76 + 77 + try { 78 + const userSession = await oauthClient.signIn(input); 79 + data.session = userSession; 80 + 81 + const { Agent } = await import('@atproto/api'); 82 + data.agent = new Agent(userSession); 83 + } catch (err) { 84 + console.error('Sign-in error:', err); 85 + throw err; 86 + } 87 + } 88 + 89 + export async function signOut() { 90 + const currentSession = data.session; 91 + if (currentSession) { 92 + await currentSession.signOut(); 93 + data.session = null; 94 + data.agent = null; 95 + } 96 + }
+1
src/lib/index.ts
···
··· 1 + // place files you want to import through the `$lib` alias in this folder.
+3
src/lib/state.svelte.ts
···
··· 1 + export const showLoginModal = $state({ 2 + visible: false 3 + });
+24
src/routes/+layout.svelte
···
··· 1 + <script lang="ts"> 2 + import { onMount } from 'svelte'; 3 + import '../app.css'; 4 + import { data, initOAuthClient } from '$lib/auth.svelte'; 5 + import LoginModal from '$lib/UI/LoginModal.svelte'; 6 + let { children } = $props(); 7 + 8 + onMount(() => { 9 + initOAuthClient(); 10 + }); 11 + 12 + // $effect(async () => { 13 + // if (data.agent) { 14 + // const likes = await data.agent.getActorLikes({ actor: data.agent.did }); 15 + // console.log(likes); 16 + // } 17 + // }); 18 + 19 + $inspect(data.agent); 20 + </script> 21 + 22 + {@render children()} 23 + 24 + <LoginModal />
+1
src/routes/+layout.ts
···
··· 1 + export const prerender = true;
+50
src/routes/+page.svelte
···
··· 1 + <script> 2 + import { data, signOut } from '$lib/auth.svelte'; 3 + import Button from '$lib/UI/Button.svelte'; 4 + import { showLoginModal } from '$lib/state.svelte'; 5 + import { onMount } from 'svelte'; 6 + 7 + onMount(() => { 8 + console.log(data.agent); 9 + }); 10 + 11 + let likes = $state([]); 12 + 13 + async function getLikes() { 14 + if (data.agent?.did) { 15 + const likesData = await data.agent.getActorLikes({ actor: data.agent.did, limit: 10 }); 16 + console.log(likesData); 17 + likes = likesData.data.feed; 18 + } 19 + } 20 + </script> 21 + 22 + <div class="mx-auto my-16 max-w-3xl px-2"> 23 + <h1 class="text-3xl font-bold">svelte atproto client oauth demo</h1> 24 + 25 + {#if !data.client} 26 + <div class="mt-8 text-sm">client not loaded</div> 27 + {/if} 28 + 29 + {#if data.client && !data.agent} 30 + <div class="mt-8 text-sm">not signed in</div> 31 + <Button class="mt-4" onclick={() => (showLoginModal.visible = true)}>Sign In</Button> 32 + {/if} 33 + 34 + {#if data.agent} 35 + <div class="mt-8 text-sm">signed in with {data.agent.did}</div> 36 + 37 + <Button class="mt-4" onclick={() => signOut()}>Sign Out</Button> 38 + 39 + <Button class="mt-4" onclick={getLikes}>Get recent likes</Button> 40 + 41 + {#if likes.length > 0} 42 + <div class="mt-8 text-sm">recent likes</div> 43 + <ul class="mt-4 flex flex-col gap-2 text-sm"> 44 + {#each likes as like} 45 + <li>{like.post.record.text}</li> 46 + {/each} 47 + </ul> 48 + {/if} 49 + {/if} 50 + </div>
static/favicon.png

This is a binary file and will not be displayed.

+21
svelte.config.js
···
··· 1 + import adapter from '@sveltejs/adapter-static'; 2 + import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 + 4 + /** @type {import('@sveltejs/kit').Config} */ 5 + const config = { 6 + // Consult https://svelte.dev/docs/kit/integrations 7 + // for more information about preprocessors 8 + preprocess: vitePreprocess(), 9 + 10 + kit: { 11 + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. 12 + // If your environment is not supported, or you settled on a specific environment, switch out the adapter. 13 + // See https://svelte.dev/docs/kit/adapters for more information about adapters. 14 + adapter: adapter(), 15 + paths: { 16 + base: '/svelte-atproto-client-oauth' 17 + } 18 + } 19 + }; 20 + 21 + export default config;
+19
tsconfig.json
···
··· 1 + { 2 + "extends": "./.svelte-kit/tsconfig.json", 3 + "compilerOptions": { 4 + "allowJs": true, 5 + "checkJs": true, 6 + "esModuleInterop": true, 7 + "forceConsistentCasingInFileNames": true, 8 + "resolveJsonModule": true, 9 + "skipLibCheck": true, 10 + "sourceMap": true, 11 + "strict": true, 12 + "moduleResolution": "bundler" 13 + } 14 + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias 15 + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files 16 + // 17 + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 18 + // from the referenced tsconfig.json - TypeScript does not merge them in 19 + }
+7
vite.config.ts
···
··· 1 + import tailwindcss from '@tailwindcss/vite'; 2 + import { sveltekit } from '@sveltejs/kit/vite'; 3 + import { defineConfig } from 'vite'; 4 + 5 + export default defineConfig({ 6 + plugins: [sveltekit(), tailwindcss()] 7 + });