├── .gitignore
├── LICENSE
├── README.md
├── jsconfig.json
├── package.json
├── pnpm-lock.yaml
├── public
└── icon
│ ├── 128.png
│ ├── 16.png
│ ├── 32.png
│ ├── 48.png
│ └── 96.png
├── src
├── content.js
├── isolated-content.js
├── manifest.json
├── mcp-connection.js
├── pages
│ └── Popup.svelte
├── popup.css
├── popup.html
├── popup.js
├── utils.js
└── vite.env.d.ts
├── svelte.config.js
└── vite.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
26 | # Config files
27 | .webextrc
28 | .webextrc.*
29 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Daniel Nakov
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # MCP for Claude.ai
2 |
3 | A browser extension that enables MCP (Model Control Protocol) capabilities in Claude.ai, allowing you to connect Claude to external tools and services directly from the browser. This enables functionality that's already existing in claude.ai but not enabled.
4 |
5 |
6 |
7 |
8 | ## Features
9 |
10 | - Connect Claude.ai to MCP-compatible servers
11 | - Manage multiple server connections
12 | - Configure environment variables and command-line arguments
13 | - Debug logging options
14 | - Dark mode support
15 |
16 | ## Installation
17 |
18 | ### From Source
19 |
20 | 1. Clone this repository
21 | ```bash
22 | git clone https://github.com/dnakov/claude-mcp.git
23 | cd claude-mcp
24 | ```
25 |
26 | 2. Install dependencies
27 | ```bash
28 | npm install
29 | # or
30 | pnpm install
31 | ```
32 |
33 | 3. Build the extension
34 | ```bash
35 | npm run build
36 | # or
37 | pnpm build
38 | ```
39 |
40 | 4. Load the extension in your browser:
41 |
42 | **Chrome/Edge**:
43 | - Go to `chrome://extensions/`
44 | - Enable "Developer mode"
45 | - Click "Load unpacked"
46 | - Select the `dist` folder from this repository
47 |
48 | **Firefox**:
49 | - Go to `about:debugging#/runtime/this-firefox`
50 | - Click "Load Temporary Add-on"
51 | - Select the `manifest.json` file from the `dist` folder
52 |
53 | ## Usage
54 |
55 | 1. Click on the extension icon in your browser toolbar when on claude.ai
56 | 2. Add a new MCP server connection with the following details:
57 | - Name: A friendly name for the server
58 | - URL: The endpoint URL for the MCP server
59 | - Command (optional): The command to execute on the server
60 | - Arguments (optional): Command-line arguments
61 | - Environment Variables (optional): Key-value pairs for environment configuration
62 |
63 | 3. Once configured, the extension will establish connections to your MCP servers when you visit Claude.ai
64 | 4. Claude will be able to use the tools provided by your MCP servers during conversations
65 |
66 | ## Development
67 |
68 | - Run in development mode with hot reloading:
69 | ```bash
70 | npm run dev
71 | # or
72 | pnpm dev
73 | ```
74 |
75 | ## Technical Details
76 |
77 | The extension uses a Server-Sent Events (SSE) connection to communicate with MCP servers. It consists of:
78 |
79 | - A background script that manages storage and extension state
80 | - Content scripts that inject MCP capabilities into Claude.ai
81 | - An isolated content script for secure communication between contexts
82 | - A popup UI for server management
83 |
84 | ## License
85 |
86 | [MIT License](LICENSE)
87 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "moduleResolution": "Node",
4 | "target": "ESNext",
5 | "module": "ESNext",
6 | /**
7 | * svelte-preprocess cannot figure out whether you have
8 | * a value or a type, so tell TypeScript to enforce using
9 | * `import type` instead of `import` for Types.
10 | */
11 | "importsNotUsedAsValues": "error",
12 | "isolatedModules": true,
13 | "resolveJsonModule": true,
14 | /**
15 | * To have warnings / errors of the Svelte compiler at the
16 | * correct position, enable source maps by default.
17 | */
18 | "sourceMap": true,
19 | "esModuleInterop": true,
20 | "skipLibCheck": true,
21 | "forceConsistentCasingInFileNames": true,
22 | /**
23 | * Typecheck JS in `.svelte` and `.js` files by default.
24 | * Disable this if you'd like to use dynamic types.
25 | */
26 | "checkJs": true
27 | },
28 | /**
29 | * Use global.d.ts instead of compilerOptions.types
30 | * to avoid limiting type declarations.
31 | */
32 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"]
33 | }
34 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "claude-tools",
3 | "private": true,
4 | "version": "1.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build"
9 | },
10 | "devDependencies": {
11 | "@sveltejs/vite-plugin-svelte": "^4.0.0",
12 | "@types/chrome": "^0.0.315",
13 | "svelte": "^5.0.0",
14 | "vite": "^5.4.4",
15 | "vite-plugin-web-extension": "^4.1.6",
16 | "webextension-polyfill": "^0.10.0"
17 | },
18 | "dependencies": {
19 | "@tailwindcss/vite": "^4.1.3",
20 | "tailwindcss": "^4.1.3"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@tailwindcss/vite':
12 | specifier: ^4.1.3
13 | version: 4.1.3(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2))
14 | tailwindcss:
15 | specifier: ^4.1.3
16 | version: 4.1.3
17 | devDependencies:
18 | '@sveltejs/vite-plugin-svelte':
19 | specifier: ^4.0.0
20 | version: 4.0.4(svelte@5.25.12)(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2))
21 | '@types/chrome':
22 | specifier: ^0.0.315
23 | version: 0.0.315
24 | svelte:
25 | specifier: ^5.0.0
26 | version: 5.25.12
27 | vite:
28 | specifier: ^5.4.4
29 | version: 5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)
30 | vite-plugin-web-extension:
31 | specifier: ^4.1.6
32 | version: 4.4.3(@types/node@22.14.0)(lightningcss@1.29.2)
33 | webextension-polyfill:
34 | specifier: ^0.10.0
35 | version: 0.10.0
36 |
37 | packages:
38 |
39 | '@ampproject/remapping@2.3.0':
40 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
41 | engines: {node: '>=6.0.0'}
42 |
43 | '@babel/code-frame@7.26.2':
44 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
45 | engines: {node: '>=6.9.0'}
46 |
47 | '@babel/helper-validator-identifier@7.25.9':
48 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
49 | engines: {node: '>=6.9.0'}
50 |
51 | '@babel/runtime@7.24.7':
52 | resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==}
53 | engines: {node: '>=6.9.0'}
54 |
55 | '@devicefarmer/adbkit-logcat@2.1.3':
56 | resolution: {integrity: sha512-yeaGFjNBc/6+svbDeul1tNHtNChw6h8pSHAt5D+JsedUrMTN7tla7B15WLDyekxsuS2XlZHRxpuC6m92wiwCNw==}
57 | engines: {node: '>= 4'}
58 |
59 | '@devicefarmer/adbkit-monkey@1.2.1':
60 | resolution: {integrity: sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==}
61 | engines: {node: '>= 0.10.4'}
62 |
63 | '@devicefarmer/adbkit@3.2.6':
64 | resolution: {integrity: sha512-8lO1hSeTgtxcOHhp4tTWq/JaOysp5KNbbyFoxNEBnwkCDZu/Bji3ZfOaG++Riv9jN6c9bgdLBOZqJTC5VJPRKQ==}
65 | engines: {node: '>= 0.10.4'}
66 | hasBin: true
67 |
68 | '@esbuild/aix-ppc64@0.21.5':
69 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
70 | engines: {node: '>=12'}
71 | cpu: [ppc64]
72 | os: [aix]
73 |
74 | '@esbuild/android-arm64@0.21.5':
75 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
76 | engines: {node: '>=12'}
77 | cpu: [arm64]
78 | os: [android]
79 |
80 | '@esbuild/android-arm@0.21.5':
81 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
82 | engines: {node: '>=12'}
83 | cpu: [arm]
84 | os: [android]
85 |
86 | '@esbuild/android-x64@0.21.5':
87 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
88 | engines: {node: '>=12'}
89 | cpu: [x64]
90 | os: [android]
91 |
92 | '@esbuild/darwin-arm64@0.21.5':
93 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
94 | engines: {node: '>=12'}
95 | cpu: [arm64]
96 | os: [darwin]
97 |
98 | '@esbuild/darwin-x64@0.21.5':
99 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
100 | engines: {node: '>=12'}
101 | cpu: [x64]
102 | os: [darwin]
103 |
104 | '@esbuild/freebsd-arm64@0.21.5':
105 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
106 | engines: {node: '>=12'}
107 | cpu: [arm64]
108 | os: [freebsd]
109 |
110 | '@esbuild/freebsd-x64@0.21.5':
111 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
112 | engines: {node: '>=12'}
113 | cpu: [x64]
114 | os: [freebsd]
115 |
116 | '@esbuild/linux-arm64@0.21.5':
117 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
118 | engines: {node: '>=12'}
119 | cpu: [arm64]
120 | os: [linux]
121 |
122 | '@esbuild/linux-arm@0.21.5':
123 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
124 | engines: {node: '>=12'}
125 | cpu: [arm]
126 | os: [linux]
127 |
128 | '@esbuild/linux-ia32@0.21.5':
129 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
130 | engines: {node: '>=12'}
131 | cpu: [ia32]
132 | os: [linux]
133 |
134 | '@esbuild/linux-loong64@0.21.5':
135 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
136 | engines: {node: '>=12'}
137 | cpu: [loong64]
138 | os: [linux]
139 |
140 | '@esbuild/linux-mips64el@0.21.5':
141 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
142 | engines: {node: '>=12'}
143 | cpu: [mips64el]
144 | os: [linux]
145 |
146 | '@esbuild/linux-ppc64@0.21.5':
147 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
148 | engines: {node: '>=12'}
149 | cpu: [ppc64]
150 | os: [linux]
151 |
152 | '@esbuild/linux-riscv64@0.21.5':
153 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
154 | engines: {node: '>=12'}
155 | cpu: [riscv64]
156 | os: [linux]
157 |
158 | '@esbuild/linux-s390x@0.21.5':
159 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
160 | engines: {node: '>=12'}
161 | cpu: [s390x]
162 | os: [linux]
163 |
164 | '@esbuild/linux-x64@0.21.5':
165 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
166 | engines: {node: '>=12'}
167 | cpu: [x64]
168 | os: [linux]
169 |
170 | '@esbuild/netbsd-x64@0.21.5':
171 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
172 | engines: {node: '>=12'}
173 | cpu: [x64]
174 | os: [netbsd]
175 |
176 | '@esbuild/openbsd-x64@0.21.5':
177 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
178 | engines: {node: '>=12'}
179 | cpu: [x64]
180 | os: [openbsd]
181 |
182 | '@esbuild/sunos-x64@0.21.5':
183 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
184 | engines: {node: '>=12'}
185 | cpu: [x64]
186 | os: [sunos]
187 |
188 | '@esbuild/win32-arm64@0.21.5':
189 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
190 | engines: {node: '>=12'}
191 | cpu: [arm64]
192 | os: [win32]
193 |
194 | '@esbuild/win32-ia32@0.21.5':
195 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
196 | engines: {node: '>=12'}
197 | cpu: [ia32]
198 | os: [win32]
199 |
200 | '@esbuild/win32-x64@0.21.5':
201 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
202 | engines: {node: '>=12'}
203 | cpu: [x64]
204 | os: [win32]
205 |
206 | '@jridgewell/gen-mapping@0.3.8':
207 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
208 | engines: {node: '>=6.0.0'}
209 |
210 | '@jridgewell/resolve-uri@3.1.2':
211 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
212 | engines: {node: '>=6.0.0'}
213 |
214 | '@jridgewell/set-array@1.2.1':
215 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
216 | engines: {node: '>=6.0.0'}
217 |
218 | '@jridgewell/sourcemap-codec@1.5.0':
219 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
220 |
221 | '@jridgewell/trace-mapping@0.3.25':
222 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
223 |
224 | '@pnpm/config.env-replace@1.1.0':
225 | resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==}
226 | engines: {node: '>=12.22.0'}
227 |
228 | '@pnpm/network.ca-file@1.0.2':
229 | resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==}
230 | engines: {node: '>=12.22.0'}
231 |
232 | '@pnpm/npm-conf@2.3.1':
233 | resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==}
234 | engines: {node: '>=12'}
235 |
236 | '@rollup/rollup-android-arm-eabi@4.39.0':
237 | resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==}
238 | cpu: [arm]
239 | os: [android]
240 |
241 | '@rollup/rollup-android-arm64@4.39.0':
242 | resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==}
243 | cpu: [arm64]
244 | os: [android]
245 |
246 | '@rollup/rollup-darwin-arm64@4.39.0':
247 | resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==}
248 | cpu: [arm64]
249 | os: [darwin]
250 |
251 | '@rollup/rollup-darwin-x64@4.39.0':
252 | resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==}
253 | cpu: [x64]
254 | os: [darwin]
255 |
256 | '@rollup/rollup-freebsd-arm64@4.39.0':
257 | resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==}
258 | cpu: [arm64]
259 | os: [freebsd]
260 |
261 | '@rollup/rollup-freebsd-x64@4.39.0':
262 | resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==}
263 | cpu: [x64]
264 | os: [freebsd]
265 |
266 | '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
267 | resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==}
268 | cpu: [arm]
269 | os: [linux]
270 |
271 | '@rollup/rollup-linux-arm-musleabihf@4.39.0':
272 | resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==}
273 | cpu: [arm]
274 | os: [linux]
275 |
276 | '@rollup/rollup-linux-arm64-gnu@4.39.0':
277 | resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==}
278 | cpu: [arm64]
279 | os: [linux]
280 |
281 | '@rollup/rollup-linux-arm64-musl@4.39.0':
282 | resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==}
283 | cpu: [arm64]
284 | os: [linux]
285 |
286 | '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
287 | resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==}
288 | cpu: [loong64]
289 | os: [linux]
290 |
291 | '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
292 | resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==}
293 | cpu: [ppc64]
294 | os: [linux]
295 |
296 | '@rollup/rollup-linux-riscv64-gnu@4.39.0':
297 | resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==}
298 | cpu: [riscv64]
299 | os: [linux]
300 |
301 | '@rollup/rollup-linux-riscv64-musl@4.39.0':
302 | resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==}
303 | cpu: [riscv64]
304 | os: [linux]
305 |
306 | '@rollup/rollup-linux-s390x-gnu@4.39.0':
307 | resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==}
308 | cpu: [s390x]
309 | os: [linux]
310 |
311 | '@rollup/rollup-linux-x64-gnu@4.39.0':
312 | resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==}
313 | cpu: [x64]
314 | os: [linux]
315 |
316 | '@rollup/rollup-linux-x64-musl@4.39.0':
317 | resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==}
318 | cpu: [x64]
319 | os: [linux]
320 |
321 | '@rollup/rollup-win32-arm64-msvc@4.39.0':
322 | resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==}
323 | cpu: [arm64]
324 | os: [win32]
325 |
326 | '@rollup/rollup-win32-ia32-msvc@4.39.0':
327 | resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==}
328 | cpu: [ia32]
329 | os: [win32]
330 |
331 | '@rollup/rollup-win32-x64-msvc@4.39.0':
332 | resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==}
333 | cpu: [x64]
334 | os: [win32]
335 |
336 | '@sindresorhus/is@5.6.0':
337 | resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
338 | engines: {node: '>=14.16'}
339 |
340 | '@sveltejs/acorn-typescript@1.0.5':
341 | resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==}
342 | peerDependencies:
343 | acorn: ^8.9.0
344 |
345 | '@sveltejs/vite-plugin-svelte-inspector@3.0.1':
346 | resolution: {integrity: sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==}
347 | engines: {node: ^18.0.0 || ^20.0.0 || >=22}
348 | peerDependencies:
349 | '@sveltejs/vite-plugin-svelte': ^4.0.0-next.0||^4.0.0
350 | svelte: ^5.0.0-next.96 || ^5.0.0
351 | vite: ^5.0.0
352 |
353 | '@sveltejs/vite-plugin-svelte@4.0.4':
354 | resolution: {integrity: sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==}
355 | engines: {node: ^18.0.0 || ^20.0.0 || >=22}
356 | peerDependencies:
357 | svelte: ^5.0.0-next.96 || ^5.0.0
358 | vite: ^5.0.0
359 |
360 | '@szmarczak/http-timer@5.0.1':
361 | resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
362 | engines: {node: '>=14.16'}
363 |
364 | '@tailwindcss/node@4.1.3':
365 | resolution: {integrity: sha512-H/6r6IPFJkCfBJZ2dKZiPJ7Ueb2wbL592+9bQEl2r73qbX6yGnmQVIfiUvDRB2YI0a3PWDrzUwkvQx1XW1bNkA==}
366 |
367 | '@tailwindcss/oxide-android-arm64@4.1.3':
368 | resolution: {integrity: sha512-cxklKjtNLwFl3mDYw4XpEfBY+G8ssSg9ADL4Wm6//5woi3XGqlxFsnV5Zb6v07dxw1NvEX2uoqsxO/zWQsgR+g==}
369 | engines: {node: '>= 10'}
370 | cpu: [arm64]
371 | os: [android]
372 |
373 | '@tailwindcss/oxide-darwin-arm64@4.1.3':
374 | resolution: {integrity: sha512-mqkf2tLR5VCrjBvuRDwzKNShRu99gCAVMkVsaEOFvv6cCjlEKXRecPu9DEnxp6STk5z+Vlbh1M5zY3nQCXMXhw==}
375 | engines: {node: '>= 10'}
376 | cpu: [arm64]
377 | os: [darwin]
378 |
379 | '@tailwindcss/oxide-darwin-x64@4.1.3':
380 | resolution: {integrity: sha512-7sGraGaWzXvCLyxrc7d+CCpUN3fYnkkcso3rCzwUmo/LteAl2ZGCDlGvDD8Y/1D3ngxT8KgDj1DSwOnNewKhmg==}
381 | engines: {node: '>= 10'}
382 | cpu: [x64]
383 | os: [darwin]
384 |
385 | '@tailwindcss/oxide-freebsd-x64@4.1.3':
386 | resolution: {integrity: sha512-E2+PbcbzIReaAYZe997wb9rId246yDkCwAakllAWSGqe6VTg9hHle67hfH6ExjpV2LSK/siRzBUs5wVff3RW9w==}
387 | engines: {node: '>= 10'}
388 | cpu: [x64]
389 | os: [freebsd]
390 |
391 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.3':
392 | resolution: {integrity: sha512-GvfbJ8wjSSjbLFFE3UYz4Eh8i4L6GiEYqCtA8j2Zd2oXriPuom/Ah/64pg/szWycQpzRnbDiJozoxFU2oJZyfg==}
393 | engines: {node: '>= 10'}
394 | cpu: [arm]
395 | os: [linux]
396 |
397 | '@tailwindcss/oxide-linux-arm64-gnu@4.1.3':
398 | resolution: {integrity: sha512-35UkuCWQTeG9BHcBQXndDOrpsnt3Pj9NVIB4CgNiKmpG8GnCNXeMczkUpOoqcOhO6Cc/mM2W7kaQ/MTEENDDXg==}
399 | engines: {node: '>= 10'}
400 | cpu: [arm64]
401 | os: [linux]
402 |
403 | '@tailwindcss/oxide-linux-arm64-musl@4.1.3':
404 | resolution: {integrity: sha512-dm18aQiML5QCj9DQo7wMbt1Z2tl3Giht54uVR87a84X8qRtuXxUqnKQkRDK5B4bCOmcZ580lF9YcoMkbDYTXHQ==}
405 | engines: {node: '>= 10'}
406 | cpu: [arm64]
407 | os: [linux]
408 |
409 | '@tailwindcss/oxide-linux-x64-gnu@4.1.3':
410 | resolution: {integrity: sha512-LMdTmGe/NPtGOaOfV2HuO7w07jI3cflPrVq5CXl+2O93DCewADK0uW1ORNAcfu2YxDUS035eY2W38TxrsqngxA==}
411 | engines: {node: '>= 10'}
412 | cpu: [x64]
413 | os: [linux]
414 |
415 | '@tailwindcss/oxide-linux-x64-musl@4.1.3':
416 | resolution: {integrity: sha512-aalNWwIi54bbFEizwl1/XpmdDrOaCjRFQRgtbv9slWjmNPuJJTIKPHf5/XXDARc9CneW9FkSTqTbyvNecYAEGw==}
417 | engines: {node: '>= 10'}
418 | cpu: [x64]
419 | os: [linux]
420 |
421 | '@tailwindcss/oxide-win32-arm64-msvc@4.1.3':
422 | resolution: {integrity: sha512-PEj7XR4OGTGoboTIAdXicKuWl4EQIjKHKuR+bFy9oYN7CFZo0eu74+70O4XuERX4yjqVZGAkCdglBODlgqcCXg==}
423 | engines: {node: '>= 10'}
424 | cpu: [arm64]
425 | os: [win32]
426 |
427 | '@tailwindcss/oxide-win32-x64-msvc@4.1.3':
428 | resolution: {integrity: sha512-T8gfxECWDBENotpw3HR9SmNiHC9AOJdxs+woasRZ8Q/J4VHN0OMs7F+4yVNZ9EVN26Wv6mZbK0jv7eHYuLJLwA==}
429 | engines: {node: '>= 10'}
430 | cpu: [x64]
431 | os: [win32]
432 |
433 | '@tailwindcss/oxide@4.1.3':
434 | resolution: {integrity: sha512-t16lpHCU7LBxDe/8dCj9ntyNpXaSTAgxWm1u2XQP5NiIu4KGSyrDJJRlK9hJ4U9yJxx0UKCVI67MJWFNll5mOQ==}
435 | engines: {node: '>= 10'}
436 |
437 | '@tailwindcss/vite@4.1.3':
438 | resolution: {integrity: sha512-lUI/QaDxLtlV52Lho6pu07CG9pSnRYLOPmKGIQjyHdTBagemc6HmgZxyjGAQ/5HMPrNeWBfTVIpQl0/jLXvWHQ==}
439 | peerDependencies:
440 | vite: ^5.2.0 || ^6
441 |
442 | '@types/chrome@0.0.315':
443 | resolution: {integrity: sha512-Oy1dYWkr6BCmgwBtOngLByCHstQ3whltZg7/7lubgIZEYvKobDneqplgc6LKERNRBwckFviV4UU5AZZNUFrJ4A==}
444 |
445 | '@types/estree@1.0.7':
446 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
447 |
448 | '@types/filesystem@0.0.36':
449 | resolution: {integrity: sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==}
450 |
451 | '@types/filewriter@0.0.33':
452 | resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==}
453 |
454 | '@types/har-format@1.2.16':
455 | resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==}
456 |
457 | '@types/http-cache-semantics@4.0.4':
458 | resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
459 |
460 | '@types/minimatch@3.0.5':
461 | resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==}
462 |
463 | '@types/node@22.14.0':
464 | resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==}
465 |
466 | acorn@8.14.1:
467 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
468 | engines: {node: '>=0.4.0'}
469 | hasBin: true
470 |
471 | adm-zip@0.5.16:
472 | resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==}
473 | engines: {node: '>=12.0'}
474 |
475 | ajv@8.17.1:
476 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
477 |
478 | ansi-align@3.0.1:
479 | resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
480 |
481 | ansi-regex@5.0.1:
482 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
483 | engines: {node: '>=8'}
484 |
485 | ansi-regex@6.1.0:
486 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
487 | engines: {node: '>=12'}
488 |
489 | ansi-styles@6.2.1:
490 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
491 | engines: {node: '>=12'}
492 |
493 | any-promise@1.3.0:
494 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
495 |
496 | aria-query@5.3.2:
497 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
498 | engines: {node: '>= 0.4'}
499 |
500 | array-differ@4.0.0:
501 | resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==}
502 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
503 |
504 | array-union@3.0.1:
505 | resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==}
506 | engines: {node: '>=12'}
507 |
508 | async-lock@1.4.1:
509 | resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==}
510 |
511 | async@3.2.6:
512 | resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
513 |
514 | at-least-node@1.0.0:
515 | resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
516 | engines: {node: '>= 4.0.0'}
517 |
518 | axobject-query@4.1.0:
519 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
520 | engines: {node: '>= 0.4'}
521 |
522 | balanced-match@1.0.2:
523 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
524 |
525 | bluebird@3.7.2:
526 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
527 |
528 | boolbase@1.0.0:
529 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
530 |
531 | boxen@7.1.1:
532 | resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==}
533 | engines: {node: '>=14.16'}
534 |
535 | brace-expansion@1.1.11:
536 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
537 |
538 | buffer-from@1.1.2:
539 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
540 |
541 | bunyan@1.8.15:
542 | resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==}
543 | engines: {'0': node >=0.10.0}
544 | hasBin: true
545 |
546 | cacheable-lookup@7.0.0:
547 | resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
548 | engines: {node: '>=14.16'}
549 |
550 | cacheable-request@10.2.14:
551 | resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
552 | engines: {node: '>=14.16'}
553 |
554 | camelcase@7.0.1:
555 | resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
556 | engines: {node: '>=14.16'}
557 |
558 | chalk@5.4.1:
559 | resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==}
560 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
561 |
562 | charenc@0.0.2:
563 | resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
564 |
565 | chrome-launcher@1.1.0:
566 | resolution: {integrity: sha512-rJYWeEAERwWIr3c3mEVXwNiODPEdMRlRxHc47B1qHPOolHZnkj7rMv1QSUfPoG6MgatWj5AxSpnKKR4QEwEQIQ==}
567 | engines: {node: '>=12.13.0'}
568 | hasBin: true
569 |
570 | ci-info@3.9.0:
571 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
572 | engines: {node: '>=8'}
573 |
574 | cli-boxes@3.0.0:
575 | resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
576 | engines: {node: '>=10'}
577 |
578 | clsx@2.1.1:
579 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
580 | engines: {node: '>=6'}
581 |
582 | commander@2.9.0:
583 | resolution: {integrity: sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==}
584 | engines: {node: '>= 0.6.x'}
585 |
586 | commander@9.5.0:
587 | resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
588 | engines: {node: ^12.20.0 || >=14}
589 |
590 | concat-map@0.0.1:
591 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
592 |
593 | concat-stream@1.6.2:
594 | resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
595 | engines: {'0': node >= 0.8}
596 |
597 | config-chain@1.1.13:
598 | resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
599 |
600 | configstore@6.0.0:
601 | resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==}
602 | engines: {node: '>=12'}
603 |
604 | core-util-is@1.0.3:
605 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
606 |
607 | crypt@0.0.2:
608 | resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==}
609 |
610 | crypto-random-string@4.0.0:
611 | resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==}
612 | engines: {node: '>=12'}
613 |
614 | css-select@5.1.0:
615 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
616 |
617 | css-what@6.1.0:
618 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
619 | engines: {node: '>= 6'}
620 |
621 | cssom@0.5.0:
622 | resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==}
623 |
624 | debounce@1.2.1:
625 | resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==}
626 |
627 | debug@2.6.9:
628 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
629 | peerDependencies:
630 | supports-color: '*'
631 | peerDependenciesMeta:
632 | supports-color:
633 | optional: true
634 |
635 | debug@4.3.7:
636 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
637 | engines: {node: '>=6.0'}
638 | peerDependencies:
639 | supports-color: '*'
640 | peerDependenciesMeta:
641 | supports-color:
642 | optional: true
643 |
644 | debug@4.4.0:
645 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
646 | engines: {node: '>=6.0'}
647 | peerDependencies:
648 | supports-color: '*'
649 | peerDependenciesMeta:
650 | supports-color:
651 | optional: true
652 |
653 | decompress-response@6.0.0:
654 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
655 | engines: {node: '>=10'}
656 |
657 | deep-extend@0.6.0:
658 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
659 | engines: {node: '>=4.0.0'}
660 |
661 | deepmerge@4.3.1:
662 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
663 | engines: {node: '>=0.10.0'}
664 |
665 | defer-to-connect@2.0.1:
666 | resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
667 | engines: {node: '>=10'}
668 |
669 | detect-libc@2.0.3:
670 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
671 | engines: {node: '>=8'}
672 |
673 | dom-serializer@2.0.0:
674 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
675 |
676 | domelementtype@2.3.0:
677 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
678 |
679 | domhandler@5.0.3:
680 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
681 | engines: {node: '>= 4'}
682 |
683 | domutils@3.2.2:
684 | resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
685 |
686 | dot-prop@6.0.1:
687 | resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
688 | engines: {node: '>=10'}
689 |
690 | dtrace-provider@0.8.8:
691 | resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==}
692 | engines: {node: '>=0.10'}
693 |
694 | eastasianwidth@0.2.0:
695 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
696 |
697 | emoji-regex@8.0.0:
698 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
699 |
700 | emoji-regex@9.2.2:
701 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
702 |
703 | enhanced-resolve@5.18.1:
704 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
705 | engines: {node: '>=10.13.0'}
706 |
707 | entities@4.5.0:
708 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
709 | engines: {node: '>=0.12'}
710 |
711 | error-ex@1.3.2:
712 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
713 |
714 | es6-error@4.1.1:
715 | resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
716 |
717 | esbuild@0.21.5:
718 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
719 | engines: {node: '>=12'}
720 | hasBin: true
721 |
722 | escape-goat@4.0.0:
723 | resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==}
724 | engines: {node: '>=12'}
725 |
726 | escape-string-regexp@4.0.0:
727 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
728 | engines: {node: '>=10'}
729 |
730 | esm-env@1.2.2:
731 | resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
732 |
733 | esrap@1.4.6:
734 | resolution: {integrity: sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==}
735 |
736 | fast-deep-equal@3.1.3:
737 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
738 |
739 | fast-uri@3.0.6:
740 | resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
741 |
742 | firefox-profile@4.6.0:
743 | resolution: {integrity: sha512-I9rAm1w8U3CdhgO4EzTJsCvgcbvynZn9lOySkZf78wUdUIQH2w9QOKf3pAX+THt2XMSSR3kJSuM8P7bYux9j8g==}
744 | hasBin: true
745 |
746 | form-data-encoder@2.1.4:
747 | resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
748 | engines: {node: '>= 14.17'}
749 |
750 | fs-extra@10.1.0:
751 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
752 | engines: {node: '>=12'}
753 |
754 | fs-extra@11.2.0:
755 | resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
756 | engines: {node: '>=14.14'}
757 |
758 | fs-extra@9.0.1:
759 | resolution: {integrity: sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==}
760 | engines: {node: '>=10'}
761 |
762 | fsevents@2.3.3:
763 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
764 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
765 | os: [darwin]
766 |
767 | fx-runner@1.4.0:
768 | resolution: {integrity: sha512-rci1g6U0rdTg6bAaBboP7XdRu01dzTAaKXxFf+PUqGuCv6Xu7o8NZdY1D5MvKGIjb6EdS1g3VlXOgksir1uGkg==}
769 | hasBin: true
770 |
771 | get-stream@6.0.1:
772 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
773 | engines: {node: '>=10'}
774 |
775 | glob-to-regexp@0.4.1:
776 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
777 |
778 | glob@6.0.4:
779 | resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==}
780 | deprecated: Glob versions prior to v9 are no longer supported
781 |
782 | global-dirs@3.0.1:
783 | resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==}
784 | engines: {node: '>=10'}
785 |
786 | got@12.6.1:
787 | resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
788 | engines: {node: '>=14.16'}
789 |
790 | graceful-fs@4.2.10:
791 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
792 |
793 | graceful-fs@4.2.11:
794 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
795 |
796 | graceful-readlink@1.0.1:
797 | resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==}
798 |
799 | growly@1.3.0:
800 | resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==}
801 |
802 | has-yarn@3.0.0:
803 | resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==}
804 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
805 |
806 | html-escaper@3.0.3:
807 | resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
808 |
809 | htmlparser2@8.0.2:
810 | resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
811 |
812 | http-cache-semantics@4.1.1:
813 | resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
814 |
815 | http2-wrapper@2.2.1:
816 | resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
817 | engines: {node: '>=10.19.0'}
818 |
819 | immediate@3.0.6:
820 | resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
821 |
822 | import-lazy@4.0.0:
823 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
824 | engines: {node: '>=8'}
825 |
826 | imurmurhash@0.1.4:
827 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
828 | engines: {node: '>=0.8.19'}
829 |
830 | inflight@1.0.6:
831 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
832 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
833 |
834 | inherits@2.0.4:
835 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
836 |
837 | ini@1.3.8:
838 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
839 |
840 | ini@2.0.0:
841 | resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==}
842 | engines: {node: '>=10'}
843 |
844 | is-absolute@0.1.7:
845 | resolution: {integrity: sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==}
846 | engines: {node: '>=0.10.0'}
847 |
848 | is-arrayish@0.2.1:
849 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
850 |
851 | is-buffer@1.1.6:
852 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
853 |
854 | is-ci@3.0.1:
855 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
856 | hasBin: true
857 |
858 | is-docker@2.2.1:
859 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
860 | engines: {node: '>=8'}
861 | hasBin: true
862 |
863 | is-fullwidth-code-point@3.0.0:
864 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
865 | engines: {node: '>=8'}
866 |
867 | is-installed-globally@0.4.0:
868 | resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==}
869 | engines: {node: '>=10'}
870 |
871 | is-npm@6.0.0:
872 | resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==}
873 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
874 |
875 | is-obj@2.0.0:
876 | resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
877 | engines: {node: '>=8'}
878 |
879 | is-path-inside@3.0.3:
880 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
881 | engines: {node: '>=8'}
882 |
883 | is-plain-object@2.0.4:
884 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
885 | engines: {node: '>=0.10.0'}
886 |
887 | is-primitive@3.0.1:
888 | resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==}
889 | engines: {node: '>=0.10.0'}
890 |
891 | is-reference@3.0.3:
892 | resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
893 |
894 | is-relative@0.1.3:
895 | resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==}
896 | engines: {node: '>=0.10.0'}
897 |
898 | is-typedarray@1.0.0:
899 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
900 |
901 | is-wsl@2.2.0:
902 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
903 | engines: {node: '>=8'}
904 |
905 | is-yarn-global@0.4.1:
906 | resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==}
907 | engines: {node: '>=12'}
908 |
909 | isarray@1.0.0:
910 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
911 |
912 | isexe@1.1.2:
913 | resolution: {integrity: sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==}
914 |
915 | isexe@2.0.0:
916 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
917 |
918 | isobject@3.0.1:
919 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
920 | engines: {node: '>=0.10.0'}
921 |
922 | jiti@2.4.2:
923 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
924 | hasBin: true
925 |
926 | js-tokens@4.0.0:
927 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
928 |
929 | json-buffer@3.0.1:
930 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
931 |
932 | json-parse-even-better-errors@3.0.2:
933 | resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==}
934 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
935 |
936 | json-schema-traverse@1.0.0:
937 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
938 |
939 | json5@2.2.3:
940 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
941 | engines: {node: '>=6'}
942 | hasBin: true
943 |
944 | jsonfile@6.1.0:
945 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
946 |
947 | jszip@3.10.1:
948 | resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
949 |
950 | keyv@4.5.4:
951 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
952 |
953 | kleur@4.1.5:
954 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
955 | engines: {node: '>=6'}
956 |
957 | latest-version@7.0.0:
958 | resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==}
959 | engines: {node: '>=14.16'}
960 |
961 | lie@3.3.0:
962 | resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
963 |
964 | lighthouse-logger@2.0.1:
965 | resolution: {integrity: sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==}
966 |
967 | lightningcss-darwin-arm64@1.29.2:
968 | resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==}
969 | engines: {node: '>= 12.0.0'}
970 | cpu: [arm64]
971 | os: [darwin]
972 |
973 | lightningcss-darwin-x64@1.29.2:
974 | resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==}
975 | engines: {node: '>= 12.0.0'}
976 | cpu: [x64]
977 | os: [darwin]
978 |
979 | lightningcss-freebsd-x64@1.29.2:
980 | resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==}
981 | engines: {node: '>= 12.0.0'}
982 | cpu: [x64]
983 | os: [freebsd]
984 |
985 | lightningcss-linux-arm-gnueabihf@1.29.2:
986 | resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==}
987 | engines: {node: '>= 12.0.0'}
988 | cpu: [arm]
989 | os: [linux]
990 |
991 | lightningcss-linux-arm64-gnu@1.29.2:
992 | resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==}
993 | engines: {node: '>= 12.0.0'}
994 | cpu: [arm64]
995 | os: [linux]
996 |
997 | lightningcss-linux-arm64-musl@1.29.2:
998 | resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==}
999 | engines: {node: '>= 12.0.0'}
1000 | cpu: [arm64]
1001 | os: [linux]
1002 |
1003 | lightningcss-linux-x64-gnu@1.29.2:
1004 | resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==}
1005 | engines: {node: '>= 12.0.0'}
1006 | cpu: [x64]
1007 | os: [linux]
1008 |
1009 | lightningcss-linux-x64-musl@1.29.2:
1010 | resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==}
1011 | engines: {node: '>= 12.0.0'}
1012 | cpu: [x64]
1013 | os: [linux]
1014 |
1015 | lightningcss-win32-arm64-msvc@1.29.2:
1016 | resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==}
1017 | engines: {node: '>= 12.0.0'}
1018 | cpu: [arm64]
1019 | os: [win32]
1020 |
1021 | lightningcss-win32-x64-msvc@1.29.2:
1022 | resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==}
1023 | engines: {node: '>= 12.0.0'}
1024 | cpu: [x64]
1025 | os: [win32]
1026 |
1027 | lightningcss@1.29.2:
1028 | resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==}
1029 | engines: {node: '>= 12.0.0'}
1030 |
1031 | lines-and-columns@2.0.4:
1032 | resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==}
1033 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1034 |
1035 | linkedom@0.14.26:
1036 | resolution: {integrity: sha512-mK6TrydfFA7phrnp+1j57ycBwFI5bGSW6YXlw9acHoqF+mP/y+FooEYYyniOt5Ot57FSKB3iwmnuQ1UUyNLm5A==}
1037 |
1038 | locate-character@3.0.0:
1039 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
1040 |
1041 | lodash.uniq@4.5.0:
1042 | resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
1043 |
1044 | lodash.uniqby@4.7.0:
1045 | resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==}
1046 |
1047 | lowercase-keys@3.0.0:
1048 | resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
1049 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1050 |
1051 | magic-string@0.30.17:
1052 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
1053 |
1054 | make-error@1.3.6:
1055 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
1056 |
1057 | marky@1.2.5:
1058 | resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==}
1059 |
1060 | md5@2.3.0:
1061 | resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==}
1062 |
1063 | mimic-response@3.1.0:
1064 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
1065 | engines: {node: '>=10'}
1066 |
1067 | mimic-response@4.0.0:
1068 | resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
1069 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1070 |
1071 | minimatch@3.1.2:
1072 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1073 |
1074 | minimist@1.2.8:
1075 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1076 |
1077 | mkdirp@0.5.6:
1078 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
1079 | hasBin: true
1080 |
1081 | mkdirp@3.0.1:
1082 | resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
1083 | engines: {node: '>=10'}
1084 | hasBin: true
1085 |
1086 | moment@2.30.1:
1087 | resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
1088 |
1089 | ms@2.0.0:
1090 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
1091 |
1092 | ms@2.1.3:
1093 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1094 |
1095 | multimatch@6.0.0:
1096 | resolution: {integrity: sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==}
1097 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1098 |
1099 | mv@2.1.1:
1100 | resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==}
1101 | engines: {node: '>=0.8.0'}
1102 |
1103 | mz@2.7.0:
1104 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1105 |
1106 | nan@2.22.2:
1107 | resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==}
1108 |
1109 | nanoid@3.3.11:
1110 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
1111 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1112 | hasBin: true
1113 |
1114 | ncp@2.0.0:
1115 | resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==}
1116 | hasBin: true
1117 |
1118 | node-forge@1.3.1:
1119 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
1120 | engines: {node: '>= 6.13.0'}
1121 |
1122 | node-notifier@10.0.1:
1123 | resolution: {integrity: sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==}
1124 |
1125 | normalize-url@8.0.1:
1126 | resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
1127 | engines: {node: '>=14.16'}
1128 |
1129 | nth-check@2.1.1:
1130 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
1131 |
1132 | object-assign@4.1.1:
1133 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1134 | engines: {node: '>=0.10.0'}
1135 |
1136 | once@1.4.0:
1137 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1138 |
1139 | os-shim@0.1.3:
1140 | resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==}
1141 | engines: {node: '>= 0.4.0'}
1142 |
1143 | p-cancelable@3.0.0:
1144 | resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
1145 | engines: {node: '>=12.20'}
1146 |
1147 | package-json@8.1.1:
1148 | resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==}
1149 | engines: {node: '>=14.16'}
1150 |
1151 | pako@1.0.11:
1152 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
1153 |
1154 | parse-json@7.1.1:
1155 | resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==}
1156 | engines: {node: '>=16'}
1157 |
1158 | path-is-absolute@1.0.1:
1159 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1160 | engines: {node: '>=0.10.0'}
1161 |
1162 | picocolors@1.1.1:
1163 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1164 |
1165 | postcss@8.5.3:
1166 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
1167 | engines: {node: ^10 || ^12 || >=14}
1168 |
1169 | process-nextick-args@2.0.1:
1170 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
1171 |
1172 | promise-toolbox@0.21.0:
1173 | resolution: {integrity: sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==}
1174 | engines: {node: '>=6'}
1175 |
1176 | proto-list@1.2.4:
1177 | resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
1178 |
1179 | pupa@3.1.0:
1180 | resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==}
1181 | engines: {node: '>=12.20'}
1182 |
1183 | quick-lru@5.1.1:
1184 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
1185 | engines: {node: '>=10'}
1186 |
1187 | rc@1.2.8:
1188 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
1189 | hasBin: true
1190 |
1191 | readable-stream@2.3.8:
1192 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
1193 |
1194 | regenerator-runtime@0.14.1:
1195 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1196 |
1197 | registry-auth-token@5.1.0:
1198 | resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==}
1199 | engines: {node: '>=14'}
1200 |
1201 | registry-url@6.0.1:
1202 | resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==}
1203 | engines: {node: '>=12'}
1204 |
1205 | require-from-string@2.0.2:
1206 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
1207 | engines: {node: '>=0.10.0'}
1208 |
1209 | resolve-alpn@1.2.1:
1210 | resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
1211 |
1212 | responselike@3.0.0:
1213 | resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
1214 | engines: {node: '>=14.16'}
1215 |
1216 | rimraf@2.4.5:
1217 | resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==}
1218 | deprecated: Rimraf versions prior to v4 are no longer supported
1219 | hasBin: true
1220 |
1221 | rollup@4.39.0:
1222 | resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==}
1223 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1224 | hasBin: true
1225 |
1226 | safe-buffer@5.1.2:
1227 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
1228 |
1229 | safe-json-stringify@1.2.0:
1230 | resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==}
1231 |
1232 | sax@1.4.1:
1233 | resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
1234 |
1235 | semver-diff@4.0.0:
1236 | resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==}
1237 | engines: {node: '>=12'}
1238 |
1239 | semver@7.7.1:
1240 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
1241 | engines: {node: '>=10'}
1242 | hasBin: true
1243 |
1244 | set-value@4.1.0:
1245 | resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==}
1246 | engines: {node: '>=11.0'}
1247 |
1248 | setimmediate@1.0.5:
1249 | resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
1250 |
1251 | shell-quote@1.7.3:
1252 | resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==}
1253 |
1254 | shellwords@0.1.1:
1255 | resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==}
1256 |
1257 | signal-exit@3.0.7:
1258 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
1259 |
1260 | source-map-js@1.2.1:
1261 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1262 | engines: {node: '>=0.10.0'}
1263 |
1264 | source-map-support@0.5.21:
1265 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
1266 |
1267 | source-map@0.6.1:
1268 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1269 | engines: {node: '>=0.10.0'}
1270 |
1271 | spawn-sync@1.0.15:
1272 | resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==}
1273 |
1274 | split@1.0.1:
1275 | resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==}
1276 |
1277 | string-width@4.2.3:
1278 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1279 | engines: {node: '>=8'}
1280 |
1281 | string-width@5.1.2:
1282 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1283 | engines: {node: '>=12'}
1284 |
1285 | string_decoder@1.1.1:
1286 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
1287 |
1288 | strip-ansi@6.0.1:
1289 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1290 | engines: {node: '>=8'}
1291 |
1292 | strip-ansi@7.1.0:
1293 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1294 | engines: {node: '>=12'}
1295 |
1296 | strip-bom@5.0.0:
1297 | resolution: {integrity: sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==}
1298 | engines: {node: '>=12'}
1299 |
1300 | strip-json-comments@2.0.1:
1301 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
1302 | engines: {node: '>=0.10.0'}
1303 |
1304 | strip-json-comments@5.0.1:
1305 | resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==}
1306 | engines: {node: '>=14.16'}
1307 |
1308 | svelte@5.25.12:
1309 | resolution: {integrity: sha512-4Y3mRN4fuZicNwBeb7sPPEUmiNIoN4lwf2NWD6CJdtYM3xVoOvjXhHQayIRbE0pTHG0mgk88n8WZvuOiNbtD8Q==}
1310 | engines: {node: '>=18'}
1311 |
1312 | tailwindcss@4.1.3:
1313 | resolution: {integrity: sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==}
1314 |
1315 | tapable@2.2.1:
1316 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
1317 | engines: {node: '>=6'}
1318 |
1319 | thenify-all@1.6.0:
1320 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1321 | engines: {node: '>=0.8'}
1322 |
1323 | thenify@3.3.1:
1324 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1325 |
1326 | through@2.3.8:
1327 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
1328 |
1329 | tmp@0.2.3:
1330 | resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==}
1331 | engines: {node: '>=14.14'}
1332 |
1333 | type-fest@1.4.0:
1334 | resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
1335 | engines: {node: '>=10'}
1336 |
1337 | type-fest@2.19.0:
1338 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
1339 | engines: {node: '>=12.20'}
1340 |
1341 | type-fest@3.13.1:
1342 | resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
1343 | engines: {node: '>=14.16'}
1344 |
1345 | typedarray-to-buffer@3.1.5:
1346 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
1347 |
1348 | typedarray@0.0.6:
1349 | resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
1350 |
1351 | uhyphen@0.2.0:
1352 | resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==}
1353 |
1354 | undici-types@6.21.0:
1355 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
1356 |
1357 | unique-string@3.0.0:
1358 | resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==}
1359 | engines: {node: '>=12'}
1360 |
1361 | universalify@1.0.0:
1362 | resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==}
1363 | engines: {node: '>= 10.0.0'}
1364 |
1365 | universalify@2.0.1:
1366 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
1367 | engines: {node: '>= 10.0.0'}
1368 |
1369 | update-notifier@6.0.2:
1370 | resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==}
1371 | engines: {node: '>=14.16'}
1372 |
1373 | util-deprecate@1.0.2:
1374 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1375 |
1376 | uuid@8.3.2:
1377 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
1378 | hasBin: true
1379 |
1380 | vite-plugin-web-extension@4.4.3:
1381 | resolution: {integrity: sha512-xOQR4o5bfxnZDlVxDYoK/aZO9Tt92CItaGybrKC41rl218Of5fsLDQDYR95rQd2wg8DnT8R9CEheQ++lmP+Euw==}
1382 | engines: {node: '>=16'}
1383 |
1384 | vite@5.4.18:
1385 | resolution: {integrity: sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==}
1386 | engines: {node: ^18.0.0 || >=20.0.0}
1387 | hasBin: true
1388 | peerDependencies:
1389 | '@types/node': ^18.0.0 || >=20.0.0
1390 | less: '*'
1391 | lightningcss: ^1.21.0
1392 | sass: '*'
1393 | sass-embedded: '*'
1394 | stylus: '*'
1395 | sugarss: '*'
1396 | terser: ^5.4.0
1397 | peerDependenciesMeta:
1398 | '@types/node':
1399 | optional: true
1400 | less:
1401 | optional: true
1402 | lightningcss:
1403 | optional: true
1404 | sass:
1405 | optional: true
1406 | sass-embedded:
1407 | optional: true
1408 | stylus:
1409 | optional: true
1410 | sugarss:
1411 | optional: true
1412 | terser:
1413 | optional: true
1414 |
1415 | vitefu@1.0.6:
1416 | resolution: {integrity: sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==}
1417 | peerDependencies:
1418 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
1419 | peerDependenciesMeta:
1420 | vite:
1421 | optional: true
1422 |
1423 | watchpack@2.4.1:
1424 | resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==}
1425 | engines: {node: '>=10.13.0'}
1426 |
1427 | web-ext-option-types@8.3.1:
1428 | resolution: {integrity: sha512-mKG1fplVXMKYaEeSs35v/x9YIx7FJJDCBQNoLoMvUXeFck0rNC2qnHsYaRnVXXd1XL7o/hz+5+T7YqpTVyEK3w==}
1429 |
1430 | web-ext-run@0.2.2:
1431 | resolution: {integrity: sha512-GD59q5/1wYQJXTHrljMZaBa3cCz+Jj3FMDLYgKyAa34TPcHSuMaGqp7TcLJ66PCe43C3hmbEAZd8QCpAB34eiw==}
1432 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1433 |
1434 | webextension-polyfill@0.10.0:
1435 | resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==}
1436 |
1437 | when@3.7.7:
1438 | resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==}
1439 |
1440 | which@1.2.4:
1441 | resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==}
1442 | hasBin: true
1443 |
1444 | which@2.0.2:
1445 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1446 | engines: {node: '>= 8'}
1447 | hasBin: true
1448 |
1449 | widest-line@4.0.1:
1450 | resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
1451 | engines: {node: '>=12'}
1452 |
1453 | winreg@0.0.12:
1454 | resolution: {integrity: sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==}
1455 |
1456 | wrap-ansi@8.1.0:
1457 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1458 | engines: {node: '>=12'}
1459 |
1460 | wrappy@1.0.2:
1461 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1462 |
1463 | write-file-atomic@3.0.3:
1464 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
1465 |
1466 | ws@8.18.0:
1467 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
1468 | engines: {node: '>=10.0.0'}
1469 | peerDependencies:
1470 | bufferutil: ^4.0.1
1471 | utf-8-validate: '>=5.0.2'
1472 | peerDependenciesMeta:
1473 | bufferutil:
1474 | optional: true
1475 | utf-8-validate:
1476 | optional: true
1477 |
1478 | xdg-basedir@5.1.0:
1479 | resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==}
1480 | engines: {node: '>=12'}
1481 |
1482 | xml2js@0.5.0:
1483 | resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==}
1484 | engines: {node: '>=4.0.0'}
1485 |
1486 | xmlbuilder@11.0.1:
1487 | resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
1488 | engines: {node: '>=4.0'}
1489 |
1490 | yaml@2.7.1:
1491 | resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==}
1492 | engines: {node: '>= 14'}
1493 | hasBin: true
1494 |
1495 | zimmerframe@1.1.2:
1496 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==}
1497 |
1498 | zip-dir@2.0.0:
1499 | resolution: {integrity: sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==}
1500 |
1501 | snapshots:
1502 |
1503 | '@ampproject/remapping@2.3.0':
1504 | dependencies:
1505 | '@jridgewell/gen-mapping': 0.3.8
1506 | '@jridgewell/trace-mapping': 0.3.25
1507 |
1508 | '@babel/code-frame@7.26.2':
1509 | dependencies:
1510 | '@babel/helper-validator-identifier': 7.25.9
1511 | js-tokens: 4.0.0
1512 | picocolors: 1.1.1
1513 |
1514 | '@babel/helper-validator-identifier@7.25.9': {}
1515 |
1516 | '@babel/runtime@7.24.7':
1517 | dependencies:
1518 | regenerator-runtime: 0.14.1
1519 |
1520 | '@devicefarmer/adbkit-logcat@2.1.3': {}
1521 |
1522 | '@devicefarmer/adbkit-monkey@1.2.1': {}
1523 |
1524 | '@devicefarmer/adbkit@3.2.6':
1525 | dependencies:
1526 | '@devicefarmer/adbkit-logcat': 2.1.3
1527 | '@devicefarmer/adbkit-monkey': 1.2.1
1528 | bluebird: 3.7.2
1529 | commander: 9.5.0
1530 | debug: 4.3.7
1531 | node-forge: 1.3.1
1532 | split: 1.0.1
1533 | transitivePeerDependencies:
1534 | - supports-color
1535 |
1536 | '@esbuild/aix-ppc64@0.21.5':
1537 | optional: true
1538 |
1539 | '@esbuild/android-arm64@0.21.5':
1540 | optional: true
1541 |
1542 | '@esbuild/android-arm@0.21.5':
1543 | optional: true
1544 |
1545 | '@esbuild/android-x64@0.21.5':
1546 | optional: true
1547 |
1548 | '@esbuild/darwin-arm64@0.21.5':
1549 | optional: true
1550 |
1551 | '@esbuild/darwin-x64@0.21.5':
1552 | optional: true
1553 |
1554 | '@esbuild/freebsd-arm64@0.21.5':
1555 | optional: true
1556 |
1557 | '@esbuild/freebsd-x64@0.21.5':
1558 | optional: true
1559 |
1560 | '@esbuild/linux-arm64@0.21.5':
1561 | optional: true
1562 |
1563 | '@esbuild/linux-arm@0.21.5':
1564 | optional: true
1565 |
1566 | '@esbuild/linux-ia32@0.21.5':
1567 | optional: true
1568 |
1569 | '@esbuild/linux-loong64@0.21.5':
1570 | optional: true
1571 |
1572 | '@esbuild/linux-mips64el@0.21.5':
1573 | optional: true
1574 |
1575 | '@esbuild/linux-ppc64@0.21.5':
1576 | optional: true
1577 |
1578 | '@esbuild/linux-riscv64@0.21.5':
1579 | optional: true
1580 |
1581 | '@esbuild/linux-s390x@0.21.5':
1582 | optional: true
1583 |
1584 | '@esbuild/linux-x64@0.21.5':
1585 | optional: true
1586 |
1587 | '@esbuild/netbsd-x64@0.21.5':
1588 | optional: true
1589 |
1590 | '@esbuild/openbsd-x64@0.21.5':
1591 | optional: true
1592 |
1593 | '@esbuild/sunos-x64@0.21.5':
1594 | optional: true
1595 |
1596 | '@esbuild/win32-arm64@0.21.5':
1597 | optional: true
1598 |
1599 | '@esbuild/win32-ia32@0.21.5':
1600 | optional: true
1601 |
1602 | '@esbuild/win32-x64@0.21.5':
1603 | optional: true
1604 |
1605 | '@jridgewell/gen-mapping@0.3.8':
1606 | dependencies:
1607 | '@jridgewell/set-array': 1.2.1
1608 | '@jridgewell/sourcemap-codec': 1.5.0
1609 | '@jridgewell/trace-mapping': 0.3.25
1610 |
1611 | '@jridgewell/resolve-uri@3.1.2': {}
1612 |
1613 | '@jridgewell/set-array@1.2.1': {}
1614 |
1615 | '@jridgewell/sourcemap-codec@1.5.0': {}
1616 |
1617 | '@jridgewell/trace-mapping@0.3.25':
1618 | dependencies:
1619 | '@jridgewell/resolve-uri': 3.1.2
1620 | '@jridgewell/sourcemap-codec': 1.5.0
1621 |
1622 | '@pnpm/config.env-replace@1.1.0': {}
1623 |
1624 | '@pnpm/network.ca-file@1.0.2':
1625 | dependencies:
1626 | graceful-fs: 4.2.10
1627 |
1628 | '@pnpm/npm-conf@2.3.1':
1629 | dependencies:
1630 | '@pnpm/config.env-replace': 1.1.0
1631 | '@pnpm/network.ca-file': 1.0.2
1632 | config-chain: 1.1.13
1633 |
1634 | '@rollup/rollup-android-arm-eabi@4.39.0':
1635 | optional: true
1636 |
1637 | '@rollup/rollup-android-arm64@4.39.0':
1638 | optional: true
1639 |
1640 | '@rollup/rollup-darwin-arm64@4.39.0':
1641 | optional: true
1642 |
1643 | '@rollup/rollup-darwin-x64@4.39.0':
1644 | optional: true
1645 |
1646 | '@rollup/rollup-freebsd-arm64@4.39.0':
1647 | optional: true
1648 |
1649 | '@rollup/rollup-freebsd-x64@4.39.0':
1650 | optional: true
1651 |
1652 | '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
1653 | optional: true
1654 |
1655 | '@rollup/rollup-linux-arm-musleabihf@4.39.0':
1656 | optional: true
1657 |
1658 | '@rollup/rollup-linux-arm64-gnu@4.39.0':
1659 | optional: true
1660 |
1661 | '@rollup/rollup-linux-arm64-musl@4.39.0':
1662 | optional: true
1663 |
1664 | '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
1665 | optional: true
1666 |
1667 | '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
1668 | optional: true
1669 |
1670 | '@rollup/rollup-linux-riscv64-gnu@4.39.0':
1671 | optional: true
1672 |
1673 | '@rollup/rollup-linux-riscv64-musl@4.39.0':
1674 | optional: true
1675 |
1676 | '@rollup/rollup-linux-s390x-gnu@4.39.0':
1677 | optional: true
1678 |
1679 | '@rollup/rollup-linux-x64-gnu@4.39.0':
1680 | optional: true
1681 |
1682 | '@rollup/rollup-linux-x64-musl@4.39.0':
1683 | optional: true
1684 |
1685 | '@rollup/rollup-win32-arm64-msvc@4.39.0':
1686 | optional: true
1687 |
1688 | '@rollup/rollup-win32-ia32-msvc@4.39.0':
1689 | optional: true
1690 |
1691 | '@rollup/rollup-win32-x64-msvc@4.39.0':
1692 | optional: true
1693 |
1694 | '@sindresorhus/is@5.6.0': {}
1695 |
1696 | '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)':
1697 | dependencies:
1698 | acorn: 8.14.1
1699 |
1700 | '@sveltejs/vite-plugin-svelte-inspector@3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.25.12)(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)))(svelte@5.25.12)(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2))':
1701 | dependencies:
1702 | '@sveltejs/vite-plugin-svelte': 4.0.4(svelte@5.25.12)(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2))
1703 | debug: 4.4.0
1704 | svelte: 5.25.12
1705 | vite: 5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)
1706 | transitivePeerDependencies:
1707 | - supports-color
1708 |
1709 | '@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.25.12)(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2))':
1710 | dependencies:
1711 | '@sveltejs/vite-plugin-svelte-inspector': 3.0.1(@sveltejs/vite-plugin-svelte@4.0.4(svelte@5.25.12)(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)))(svelte@5.25.12)(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2))
1712 | debug: 4.4.0
1713 | deepmerge: 4.3.1
1714 | kleur: 4.1.5
1715 | magic-string: 0.30.17
1716 | svelte: 5.25.12
1717 | vite: 5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)
1718 | vitefu: 1.0.6(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2))
1719 | transitivePeerDependencies:
1720 | - supports-color
1721 |
1722 | '@szmarczak/http-timer@5.0.1':
1723 | dependencies:
1724 | defer-to-connect: 2.0.1
1725 |
1726 | '@tailwindcss/node@4.1.3':
1727 | dependencies:
1728 | enhanced-resolve: 5.18.1
1729 | jiti: 2.4.2
1730 | lightningcss: 1.29.2
1731 | tailwindcss: 4.1.3
1732 |
1733 | '@tailwindcss/oxide-android-arm64@4.1.3':
1734 | optional: true
1735 |
1736 | '@tailwindcss/oxide-darwin-arm64@4.1.3':
1737 | optional: true
1738 |
1739 | '@tailwindcss/oxide-darwin-x64@4.1.3':
1740 | optional: true
1741 |
1742 | '@tailwindcss/oxide-freebsd-x64@4.1.3':
1743 | optional: true
1744 |
1745 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.3':
1746 | optional: true
1747 |
1748 | '@tailwindcss/oxide-linux-arm64-gnu@4.1.3':
1749 | optional: true
1750 |
1751 | '@tailwindcss/oxide-linux-arm64-musl@4.1.3':
1752 | optional: true
1753 |
1754 | '@tailwindcss/oxide-linux-x64-gnu@4.1.3':
1755 | optional: true
1756 |
1757 | '@tailwindcss/oxide-linux-x64-musl@4.1.3':
1758 | optional: true
1759 |
1760 | '@tailwindcss/oxide-win32-arm64-msvc@4.1.3':
1761 | optional: true
1762 |
1763 | '@tailwindcss/oxide-win32-x64-msvc@4.1.3':
1764 | optional: true
1765 |
1766 | '@tailwindcss/oxide@4.1.3':
1767 | optionalDependencies:
1768 | '@tailwindcss/oxide-android-arm64': 4.1.3
1769 | '@tailwindcss/oxide-darwin-arm64': 4.1.3
1770 | '@tailwindcss/oxide-darwin-x64': 4.1.3
1771 | '@tailwindcss/oxide-freebsd-x64': 4.1.3
1772 | '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.3
1773 | '@tailwindcss/oxide-linux-arm64-gnu': 4.1.3
1774 | '@tailwindcss/oxide-linux-arm64-musl': 4.1.3
1775 | '@tailwindcss/oxide-linux-x64-gnu': 4.1.3
1776 | '@tailwindcss/oxide-linux-x64-musl': 4.1.3
1777 | '@tailwindcss/oxide-win32-arm64-msvc': 4.1.3
1778 | '@tailwindcss/oxide-win32-x64-msvc': 4.1.3
1779 |
1780 | '@tailwindcss/vite@4.1.3(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2))':
1781 | dependencies:
1782 | '@tailwindcss/node': 4.1.3
1783 | '@tailwindcss/oxide': 4.1.3
1784 | tailwindcss: 4.1.3
1785 | vite: 5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)
1786 |
1787 | '@types/chrome@0.0.315':
1788 | dependencies:
1789 | '@types/filesystem': 0.0.36
1790 | '@types/har-format': 1.2.16
1791 |
1792 | '@types/estree@1.0.7': {}
1793 |
1794 | '@types/filesystem@0.0.36':
1795 | dependencies:
1796 | '@types/filewriter': 0.0.33
1797 |
1798 | '@types/filewriter@0.0.33': {}
1799 |
1800 | '@types/har-format@1.2.16': {}
1801 |
1802 | '@types/http-cache-semantics@4.0.4': {}
1803 |
1804 | '@types/minimatch@3.0.5': {}
1805 |
1806 | '@types/node@22.14.0':
1807 | dependencies:
1808 | undici-types: 6.21.0
1809 |
1810 | acorn@8.14.1: {}
1811 |
1812 | adm-zip@0.5.16: {}
1813 |
1814 | ajv@8.17.1:
1815 | dependencies:
1816 | fast-deep-equal: 3.1.3
1817 | fast-uri: 3.0.6
1818 | json-schema-traverse: 1.0.0
1819 | require-from-string: 2.0.2
1820 |
1821 | ansi-align@3.0.1:
1822 | dependencies:
1823 | string-width: 4.2.3
1824 |
1825 | ansi-regex@5.0.1: {}
1826 |
1827 | ansi-regex@6.1.0: {}
1828 |
1829 | ansi-styles@6.2.1: {}
1830 |
1831 | any-promise@1.3.0: {}
1832 |
1833 | aria-query@5.3.2: {}
1834 |
1835 | array-differ@4.0.0: {}
1836 |
1837 | array-union@3.0.1: {}
1838 |
1839 | async-lock@1.4.1: {}
1840 |
1841 | async@3.2.6: {}
1842 |
1843 | at-least-node@1.0.0: {}
1844 |
1845 | axobject-query@4.1.0: {}
1846 |
1847 | balanced-match@1.0.2: {}
1848 |
1849 | bluebird@3.7.2: {}
1850 |
1851 | boolbase@1.0.0: {}
1852 |
1853 | boxen@7.1.1:
1854 | dependencies:
1855 | ansi-align: 3.0.1
1856 | camelcase: 7.0.1
1857 | chalk: 5.4.1
1858 | cli-boxes: 3.0.0
1859 | string-width: 5.1.2
1860 | type-fest: 2.19.0
1861 | widest-line: 4.0.1
1862 | wrap-ansi: 8.1.0
1863 |
1864 | brace-expansion@1.1.11:
1865 | dependencies:
1866 | balanced-match: 1.0.2
1867 | concat-map: 0.0.1
1868 |
1869 | buffer-from@1.1.2: {}
1870 |
1871 | bunyan@1.8.15:
1872 | optionalDependencies:
1873 | dtrace-provider: 0.8.8
1874 | moment: 2.30.1
1875 | mv: 2.1.1
1876 | safe-json-stringify: 1.2.0
1877 |
1878 | cacheable-lookup@7.0.0: {}
1879 |
1880 | cacheable-request@10.2.14:
1881 | dependencies:
1882 | '@types/http-cache-semantics': 4.0.4
1883 | get-stream: 6.0.1
1884 | http-cache-semantics: 4.1.1
1885 | keyv: 4.5.4
1886 | mimic-response: 4.0.0
1887 | normalize-url: 8.0.1
1888 | responselike: 3.0.0
1889 |
1890 | camelcase@7.0.1: {}
1891 |
1892 | chalk@5.4.1: {}
1893 |
1894 | charenc@0.0.2: {}
1895 |
1896 | chrome-launcher@1.1.0:
1897 | dependencies:
1898 | '@types/node': 22.14.0
1899 | escape-string-regexp: 4.0.0
1900 | is-wsl: 2.2.0
1901 | lighthouse-logger: 2.0.1
1902 | transitivePeerDependencies:
1903 | - supports-color
1904 |
1905 | ci-info@3.9.0: {}
1906 |
1907 | cli-boxes@3.0.0: {}
1908 |
1909 | clsx@2.1.1: {}
1910 |
1911 | commander@2.9.0:
1912 | dependencies:
1913 | graceful-readlink: 1.0.1
1914 |
1915 | commander@9.5.0: {}
1916 |
1917 | concat-map@0.0.1: {}
1918 |
1919 | concat-stream@1.6.2:
1920 | dependencies:
1921 | buffer-from: 1.1.2
1922 | inherits: 2.0.4
1923 | readable-stream: 2.3.8
1924 | typedarray: 0.0.6
1925 |
1926 | config-chain@1.1.13:
1927 | dependencies:
1928 | ini: 1.3.8
1929 | proto-list: 1.2.4
1930 |
1931 | configstore@6.0.0:
1932 | dependencies:
1933 | dot-prop: 6.0.1
1934 | graceful-fs: 4.2.11
1935 | unique-string: 3.0.0
1936 | write-file-atomic: 3.0.3
1937 | xdg-basedir: 5.1.0
1938 |
1939 | core-util-is@1.0.3: {}
1940 |
1941 | crypt@0.0.2: {}
1942 |
1943 | crypto-random-string@4.0.0:
1944 | dependencies:
1945 | type-fest: 1.4.0
1946 |
1947 | css-select@5.1.0:
1948 | dependencies:
1949 | boolbase: 1.0.0
1950 | css-what: 6.1.0
1951 | domhandler: 5.0.3
1952 | domutils: 3.2.2
1953 | nth-check: 2.1.1
1954 |
1955 | css-what@6.1.0: {}
1956 |
1957 | cssom@0.5.0: {}
1958 |
1959 | debounce@1.2.1: {}
1960 |
1961 | debug@2.6.9:
1962 | dependencies:
1963 | ms: 2.0.0
1964 |
1965 | debug@4.3.7:
1966 | dependencies:
1967 | ms: 2.1.3
1968 |
1969 | debug@4.4.0:
1970 | dependencies:
1971 | ms: 2.1.3
1972 |
1973 | decompress-response@6.0.0:
1974 | dependencies:
1975 | mimic-response: 3.1.0
1976 |
1977 | deep-extend@0.6.0: {}
1978 |
1979 | deepmerge@4.3.1: {}
1980 |
1981 | defer-to-connect@2.0.1: {}
1982 |
1983 | detect-libc@2.0.3: {}
1984 |
1985 | dom-serializer@2.0.0:
1986 | dependencies:
1987 | domelementtype: 2.3.0
1988 | domhandler: 5.0.3
1989 | entities: 4.5.0
1990 |
1991 | domelementtype@2.3.0: {}
1992 |
1993 | domhandler@5.0.3:
1994 | dependencies:
1995 | domelementtype: 2.3.0
1996 |
1997 | domutils@3.2.2:
1998 | dependencies:
1999 | dom-serializer: 2.0.0
2000 | domelementtype: 2.3.0
2001 | domhandler: 5.0.3
2002 |
2003 | dot-prop@6.0.1:
2004 | dependencies:
2005 | is-obj: 2.0.0
2006 |
2007 | dtrace-provider@0.8.8:
2008 | dependencies:
2009 | nan: 2.22.2
2010 | optional: true
2011 |
2012 | eastasianwidth@0.2.0: {}
2013 |
2014 | emoji-regex@8.0.0: {}
2015 |
2016 | emoji-regex@9.2.2: {}
2017 |
2018 | enhanced-resolve@5.18.1:
2019 | dependencies:
2020 | graceful-fs: 4.2.11
2021 | tapable: 2.2.1
2022 |
2023 | entities@4.5.0: {}
2024 |
2025 | error-ex@1.3.2:
2026 | dependencies:
2027 | is-arrayish: 0.2.1
2028 |
2029 | es6-error@4.1.1: {}
2030 |
2031 | esbuild@0.21.5:
2032 | optionalDependencies:
2033 | '@esbuild/aix-ppc64': 0.21.5
2034 | '@esbuild/android-arm': 0.21.5
2035 | '@esbuild/android-arm64': 0.21.5
2036 | '@esbuild/android-x64': 0.21.5
2037 | '@esbuild/darwin-arm64': 0.21.5
2038 | '@esbuild/darwin-x64': 0.21.5
2039 | '@esbuild/freebsd-arm64': 0.21.5
2040 | '@esbuild/freebsd-x64': 0.21.5
2041 | '@esbuild/linux-arm': 0.21.5
2042 | '@esbuild/linux-arm64': 0.21.5
2043 | '@esbuild/linux-ia32': 0.21.5
2044 | '@esbuild/linux-loong64': 0.21.5
2045 | '@esbuild/linux-mips64el': 0.21.5
2046 | '@esbuild/linux-ppc64': 0.21.5
2047 | '@esbuild/linux-riscv64': 0.21.5
2048 | '@esbuild/linux-s390x': 0.21.5
2049 | '@esbuild/linux-x64': 0.21.5
2050 | '@esbuild/netbsd-x64': 0.21.5
2051 | '@esbuild/openbsd-x64': 0.21.5
2052 | '@esbuild/sunos-x64': 0.21.5
2053 | '@esbuild/win32-arm64': 0.21.5
2054 | '@esbuild/win32-ia32': 0.21.5
2055 | '@esbuild/win32-x64': 0.21.5
2056 |
2057 | escape-goat@4.0.0: {}
2058 |
2059 | escape-string-regexp@4.0.0: {}
2060 |
2061 | esm-env@1.2.2: {}
2062 |
2063 | esrap@1.4.6:
2064 | dependencies:
2065 | '@jridgewell/sourcemap-codec': 1.5.0
2066 |
2067 | fast-deep-equal@3.1.3: {}
2068 |
2069 | fast-uri@3.0.6: {}
2070 |
2071 | firefox-profile@4.6.0:
2072 | dependencies:
2073 | adm-zip: 0.5.16
2074 | fs-extra: 9.0.1
2075 | ini: 2.0.0
2076 | minimist: 1.2.8
2077 | xml2js: 0.5.0
2078 |
2079 | form-data-encoder@2.1.4: {}
2080 |
2081 | fs-extra@10.1.0:
2082 | dependencies:
2083 | graceful-fs: 4.2.11
2084 | jsonfile: 6.1.0
2085 | universalify: 2.0.1
2086 |
2087 | fs-extra@11.2.0:
2088 | dependencies:
2089 | graceful-fs: 4.2.11
2090 | jsonfile: 6.1.0
2091 | universalify: 2.0.1
2092 |
2093 | fs-extra@9.0.1:
2094 | dependencies:
2095 | at-least-node: 1.0.0
2096 | graceful-fs: 4.2.11
2097 | jsonfile: 6.1.0
2098 | universalify: 1.0.0
2099 |
2100 | fsevents@2.3.3:
2101 | optional: true
2102 |
2103 | fx-runner@1.4.0:
2104 | dependencies:
2105 | commander: 2.9.0
2106 | shell-quote: 1.7.3
2107 | spawn-sync: 1.0.15
2108 | when: 3.7.7
2109 | which: 1.2.4
2110 | winreg: 0.0.12
2111 |
2112 | get-stream@6.0.1: {}
2113 |
2114 | glob-to-regexp@0.4.1: {}
2115 |
2116 | glob@6.0.4:
2117 | dependencies:
2118 | inflight: 1.0.6
2119 | inherits: 2.0.4
2120 | minimatch: 3.1.2
2121 | once: 1.4.0
2122 | path-is-absolute: 1.0.1
2123 | optional: true
2124 |
2125 | global-dirs@3.0.1:
2126 | dependencies:
2127 | ini: 2.0.0
2128 |
2129 | got@12.6.1:
2130 | dependencies:
2131 | '@sindresorhus/is': 5.6.0
2132 | '@szmarczak/http-timer': 5.0.1
2133 | cacheable-lookup: 7.0.0
2134 | cacheable-request: 10.2.14
2135 | decompress-response: 6.0.0
2136 | form-data-encoder: 2.1.4
2137 | get-stream: 6.0.1
2138 | http2-wrapper: 2.2.1
2139 | lowercase-keys: 3.0.0
2140 | p-cancelable: 3.0.0
2141 | responselike: 3.0.0
2142 |
2143 | graceful-fs@4.2.10: {}
2144 |
2145 | graceful-fs@4.2.11: {}
2146 |
2147 | graceful-readlink@1.0.1: {}
2148 |
2149 | growly@1.3.0: {}
2150 |
2151 | has-yarn@3.0.0: {}
2152 |
2153 | html-escaper@3.0.3: {}
2154 |
2155 | htmlparser2@8.0.2:
2156 | dependencies:
2157 | domelementtype: 2.3.0
2158 | domhandler: 5.0.3
2159 | domutils: 3.2.2
2160 | entities: 4.5.0
2161 |
2162 | http-cache-semantics@4.1.1: {}
2163 |
2164 | http2-wrapper@2.2.1:
2165 | dependencies:
2166 | quick-lru: 5.1.1
2167 | resolve-alpn: 1.2.1
2168 |
2169 | immediate@3.0.6: {}
2170 |
2171 | import-lazy@4.0.0: {}
2172 |
2173 | imurmurhash@0.1.4: {}
2174 |
2175 | inflight@1.0.6:
2176 | dependencies:
2177 | once: 1.4.0
2178 | wrappy: 1.0.2
2179 | optional: true
2180 |
2181 | inherits@2.0.4: {}
2182 |
2183 | ini@1.3.8: {}
2184 |
2185 | ini@2.0.0: {}
2186 |
2187 | is-absolute@0.1.7:
2188 | dependencies:
2189 | is-relative: 0.1.3
2190 |
2191 | is-arrayish@0.2.1: {}
2192 |
2193 | is-buffer@1.1.6: {}
2194 |
2195 | is-ci@3.0.1:
2196 | dependencies:
2197 | ci-info: 3.9.0
2198 |
2199 | is-docker@2.2.1: {}
2200 |
2201 | is-fullwidth-code-point@3.0.0: {}
2202 |
2203 | is-installed-globally@0.4.0:
2204 | dependencies:
2205 | global-dirs: 3.0.1
2206 | is-path-inside: 3.0.3
2207 |
2208 | is-npm@6.0.0: {}
2209 |
2210 | is-obj@2.0.0: {}
2211 |
2212 | is-path-inside@3.0.3: {}
2213 |
2214 | is-plain-object@2.0.4:
2215 | dependencies:
2216 | isobject: 3.0.1
2217 |
2218 | is-primitive@3.0.1: {}
2219 |
2220 | is-reference@3.0.3:
2221 | dependencies:
2222 | '@types/estree': 1.0.7
2223 |
2224 | is-relative@0.1.3: {}
2225 |
2226 | is-typedarray@1.0.0: {}
2227 |
2228 | is-wsl@2.2.0:
2229 | dependencies:
2230 | is-docker: 2.2.1
2231 |
2232 | is-yarn-global@0.4.1: {}
2233 |
2234 | isarray@1.0.0: {}
2235 |
2236 | isexe@1.1.2: {}
2237 |
2238 | isexe@2.0.0: {}
2239 |
2240 | isobject@3.0.1: {}
2241 |
2242 | jiti@2.4.2: {}
2243 |
2244 | js-tokens@4.0.0: {}
2245 |
2246 | json-buffer@3.0.1: {}
2247 |
2248 | json-parse-even-better-errors@3.0.2: {}
2249 |
2250 | json-schema-traverse@1.0.0: {}
2251 |
2252 | json5@2.2.3: {}
2253 |
2254 | jsonfile@6.1.0:
2255 | dependencies:
2256 | universalify: 2.0.1
2257 | optionalDependencies:
2258 | graceful-fs: 4.2.11
2259 |
2260 | jszip@3.10.1:
2261 | dependencies:
2262 | lie: 3.3.0
2263 | pako: 1.0.11
2264 | readable-stream: 2.3.8
2265 | setimmediate: 1.0.5
2266 |
2267 | keyv@4.5.4:
2268 | dependencies:
2269 | json-buffer: 3.0.1
2270 |
2271 | kleur@4.1.5: {}
2272 |
2273 | latest-version@7.0.0:
2274 | dependencies:
2275 | package-json: 8.1.1
2276 |
2277 | lie@3.3.0:
2278 | dependencies:
2279 | immediate: 3.0.6
2280 |
2281 | lighthouse-logger@2.0.1:
2282 | dependencies:
2283 | debug: 2.6.9
2284 | marky: 1.2.5
2285 | transitivePeerDependencies:
2286 | - supports-color
2287 |
2288 | lightningcss-darwin-arm64@1.29.2:
2289 | optional: true
2290 |
2291 | lightningcss-darwin-x64@1.29.2:
2292 | optional: true
2293 |
2294 | lightningcss-freebsd-x64@1.29.2:
2295 | optional: true
2296 |
2297 | lightningcss-linux-arm-gnueabihf@1.29.2:
2298 | optional: true
2299 |
2300 | lightningcss-linux-arm64-gnu@1.29.2:
2301 | optional: true
2302 |
2303 | lightningcss-linux-arm64-musl@1.29.2:
2304 | optional: true
2305 |
2306 | lightningcss-linux-x64-gnu@1.29.2:
2307 | optional: true
2308 |
2309 | lightningcss-linux-x64-musl@1.29.2:
2310 | optional: true
2311 |
2312 | lightningcss-win32-arm64-msvc@1.29.2:
2313 | optional: true
2314 |
2315 | lightningcss-win32-x64-msvc@1.29.2:
2316 | optional: true
2317 |
2318 | lightningcss@1.29.2:
2319 | dependencies:
2320 | detect-libc: 2.0.3
2321 | optionalDependencies:
2322 | lightningcss-darwin-arm64: 1.29.2
2323 | lightningcss-darwin-x64: 1.29.2
2324 | lightningcss-freebsd-x64: 1.29.2
2325 | lightningcss-linux-arm-gnueabihf: 1.29.2
2326 | lightningcss-linux-arm64-gnu: 1.29.2
2327 | lightningcss-linux-arm64-musl: 1.29.2
2328 | lightningcss-linux-x64-gnu: 1.29.2
2329 | lightningcss-linux-x64-musl: 1.29.2
2330 | lightningcss-win32-arm64-msvc: 1.29.2
2331 | lightningcss-win32-x64-msvc: 1.29.2
2332 |
2333 | lines-and-columns@2.0.4: {}
2334 |
2335 | linkedom@0.14.26:
2336 | dependencies:
2337 | css-select: 5.1.0
2338 | cssom: 0.5.0
2339 | html-escaper: 3.0.3
2340 | htmlparser2: 8.0.2
2341 | uhyphen: 0.2.0
2342 |
2343 | locate-character@3.0.0: {}
2344 |
2345 | lodash.uniq@4.5.0: {}
2346 |
2347 | lodash.uniqby@4.7.0: {}
2348 |
2349 | lowercase-keys@3.0.0: {}
2350 |
2351 | magic-string@0.30.17:
2352 | dependencies:
2353 | '@jridgewell/sourcemap-codec': 1.5.0
2354 |
2355 | make-error@1.3.6: {}
2356 |
2357 | marky@1.2.5: {}
2358 |
2359 | md5@2.3.0:
2360 | dependencies:
2361 | charenc: 0.0.2
2362 | crypt: 0.0.2
2363 | is-buffer: 1.1.6
2364 |
2365 | mimic-response@3.1.0: {}
2366 |
2367 | mimic-response@4.0.0: {}
2368 |
2369 | minimatch@3.1.2:
2370 | dependencies:
2371 | brace-expansion: 1.1.11
2372 |
2373 | minimist@1.2.8: {}
2374 |
2375 | mkdirp@0.5.6:
2376 | dependencies:
2377 | minimist: 1.2.8
2378 | optional: true
2379 |
2380 | mkdirp@3.0.1: {}
2381 |
2382 | moment@2.30.1:
2383 | optional: true
2384 |
2385 | ms@2.0.0: {}
2386 |
2387 | ms@2.1.3: {}
2388 |
2389 | multimatch@6.0.0:
2390 | dependencies:
2391 | '@types/minimatch': 3.0.5
2392 | array-differ: 4.0.0
2393 | array-union: 3.0.1
2394 | minimatch: 3.1.2
2395 |
2396 | mv@2.1.1:
2397 | dependencies:
2398 | mkdirp: 0.5.6
2399 | ncp: 2.0.0
2400 | rimraf: 2.4.5
2401 | optional: true
2402 |
2403 | mz@2.7.0:
2404 | dependencies:
2405 | any-promise: 1.3.0
2406 | object-assign: 4.1.1
2407 | thenify-all: 1.6.0
2408 |
2409 | nan@2.22.2:
2410 | optional: true
2411 |
2412 | nanoid@3.3.11: {}
2413 |
2414 | ncp@2.0.0:
2415 | optional: true
2416 |
2417 | node-forge@1.3.1: {}
2418 |
2419 | node-notifier@10.0.1:
2420 | dependencies:
2421 | growly: 1.3.0
2422 | is-wsl: 2.2.0
2423 | semver: 7.7.1
2424 | shellwords: 0.1.1
2425 | uuid: 8.3.2
2426 | which: 2.0.2
2427 |
2428 | normalize-url@8.0.1: {}
2429 |
2430 | nth-check@2.1.1:
2431 | dependencies:
2432 | boolbase: 1.0.0
2433 |
2434 | object-assign@4.1.1: {}
2435 |
2436 | once@1.4.0:
2437 | dependencies:
2438 | wrappy: 1.0.2
2439 | optional: true
2440 |
2441 | os-shim@0.1.3: {}
2442 |
2443 | p-cancelable@3.0.0: {}
2444 |
2445 | package-json@8.1.1:
2446 | dependencies:
2447 | got: 12.6.1
2448 | registry-auth-token: 5.1.0
2449 | registry-url: 6.0.1
2450 | semver: 7.7.1
2451 |
2452 | pako@1.0.11: {}
2453 |
2454 | parse-json@7.1.1:
2455 | dependencies:
2456 | '@babel/code-frame': 7.26.2
2457 | error-ex: 1.3.2
2458 | json-parse-even-better-errors: 3.0.2
2459 | lines-and-columns: 2.0.4
2460 | type-fest: 3.13.1
2461 |
2462 | path-is-absolute@1.0.1:
2463 | optional: true
2464 |
2465 | picocolors@1.1.1: {}
2466 |
2467 | postcss@8.5.3:
2468 | dependencies:
2469 | nanoid: 3.3.11
2470 | picocolors: 1.1.1
2471 | source-map-js: 1.2.1
2472 |
2473 | process-nextick-args@2.0.1: {}
2474 |
2475 | promise-toolbox@0.21.0:
2476 | dependencies:
2477 | make-error: 1.3.6
2478 |
2479 | proto-list@1.2.4: {}
2480 |
2481 | pupa@3.1.0:
2482 | dependencies:
2483 | escape-goat: 4.0.0
2484 |
2485 | quick-lru@5.1.1: {}
2486 |
2487 | rc@1.2.8:
2488 | dependencies:
2489 | deep-extend: 0.6.0
2490 | ini: 1.3.8
2491 | minimist: 1.2.8
2492 | strip-json-comments: 2.0.1
2493 |
2494 | readable-stream@2.3.8:
2495 | dependencies:
2496 | core-util-is: 1.0.3
2497 | inherits: 2.0.4
2498 | isarray: 1.0.0
2499 | process-nextick-args: 2.0.1
2500 | safe-buffer: 5.1.2
2501 | string_decoder: 1.1.1
2502 | util-deprecate: 1.0.2
2503 |
2504 | regenerator-runtime@0.14.1: {}
2505 |
2506 | registry-auth-token@5.1.0:
2507 | dependencies:
2508 | '@pnpm/npm-conf': 2.3.1
2509 |
2510 | registry-url@6.0.1:
2511 | dependencies:
2512 | rc: 1.2.8
2513 |
2514 | require-from-string@2.0.2: {}
2515 |
2516 | resolve-alpn@1.2.1: {}
2517 |
2518 | responselike@3.0.0:
2519 | dependencies:
2520 | lowercase-keys: 3.0.0
2521 |
2522 | rimraf@2.4.5:
2523 | dependencies:
2524 | glob: 6.0.4
2525 | optional: true
2526 |
2527 | rollup@4.39.0:
2528 | dependencies:
2529 | '@types/estree': 1.0.7
2530 | optionalDependencies:
2531 | '@rollup/rollup-android-arm-eabi': 4.39.0
2532 | '@rollup/rollup-android-arm64': 4.39.0
2533 | '@rollup/rollup-darwin-arm64': 4.39.0
2534 | '@rollup/rollup-darwin-x64': 4.39.0
2535 | '@rollup/rollup-freebsd-arm64': 4.39.0
2536 | '@rollup/rollup-freebsd-x64': 4.39.0
2537 | '@rollup/rollup-linux-arm-gnueabihf': 4.39.0
2538 | '@rollup/rollup-linux-arm-musleabihf': 4.39.0
2539 | '@rollup/rollup-linux-arm64-gnu': 4.39.0
2540 | '@rollup/rollup-linux-arm64-musl': 4.39.0
2541 | '@rollup/rollup-linux-loongarch64-gnu': 4.39.0
2542 | '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0
2543 | '@rollup/rollup-linux-riscv64-gnu': 4.39.0
2544 | '@rollup/rollup-linux-riscv64-musl': 4.39.0
2545 | '@rollup/rollup-linux-s390x-gnu': 4.39.0
2546 | '@rollup/rollup-linux-x64-gnu': 4.39.0
2547 | '@rollup/rollup-linux-x64-musl': 4.39.0
2548 | '@rollup/rollup-win32-arm64-msvc': 4.39.0
2549 | '@rollup/rollup-win32-ia32-msvc': 4.39.0
2550 | '@rollup/rollup-win32-x64-msvc': 4.39.0
2551 | fsevents: 2.3.3
2552 |
2553 | safe-buffer@5.1.2: {}
2554 |
2555 | safe-json-stringify@1.2.0:
2556 | optional: true
2557 |
2558 | sax@1.4.1: {}
2559 |
2560 | semver-diff@4.0.0:
2561 | dependencies:
2562 | semver: 7.7.1
2563 |
2564 | semver@7.7.1: {}
2565 |
2566 | set-value@4.1.0:
2567 | dependencies:
2568 | is-plain-object: 2.0.4
2569 | is-primitive: 3.0.1
2570 |
2571 | setimmediate@1.0.5: {}
2572 |
2573 | shell-quote@1.7.3: {}
2574 |
2575 | shellwords@0.1.1: {}
2576 |
2577 | signal-exit@3.0.7: {}
2578 |
2579 | source-map-js@1.2.1: {}
2580 |
2581 | source-map-support@0.5.21:
2582 | dependencies:
2583 | buffer-from: 1.1.2
2584 | source-map: 0.6.1
2585 |
2586 | source-map@0.6.1: {}
2587 |
2588 | spawn-sync@1.0.15:
2589 | dependencies:
2590 | concat-stream: 1.6.2
2591 | os-shim: 0.1.3
2592 |
2593 | split@1.0.1:
2594 | dependencies:
2595 | through: 2.3.8
2596 |
2597 | string-width@4.2.3:
2598 | dependencies:
2599 | emoji-regex: 8.0.0
2600 | is-fullwidth-code-point: 3.0.0
2601 | strip-ansi: 6.0.1
2602 |
2603 | string-width@5.1.2:
2604 | dependencies:
2605 | eastasianwidth: 0.2.0
2606 | emoji-regex: 9.2.2
2607 | strip-ansi: 7.1.0
2608 |
2609 | string_decoder@1.1.1:
2610 | dependencies:
2611 | safe-buffer: 5.1.2
2612 |
2613 | strip-ansi@6.0.1:
2614 | dependencies:
2615 | ansi-regex: 5.0.1
2616 |
2617 | strip-ansi@7.1.0:
2618 | dependencies:
2619 | ansi-regex: 6.1.0
2620 |
2621 | strip-bom@5.0.0: {}
2622 |
2623 | strip-json-comments@2.0.1: {}
2624 |
2625 | strip-json-comments@5.0.1: {}
2626 |
2627 | svelte@5.25.12:
2628 | dependencies:
2629 | '@ampproject/remapping': 2.3.0
2630 | '@jridgewell/sourcemap-codec': 1.5.0
2631 | '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1)
2632 | '@types/estree': 1.0.7
2633 | acorn: 8.14.1
2634 | aria-query: 5.3.2
2635 | axobject-query: 4.1.0
2636 | clsx: 2.1.1
2637 | esm-env: 1.2.2
2638 | esrap: 1.4.6
2639 | is-reference: 3.0.3
2640 | locate-character: 3.0.0
2641 | magic-string: 0.30.17
2642 | zimmerframe: 1.1.2
2643 |
2644 | tailwindcss@4.1.3: {}
2645 |
2646 | tapable@2.2.1: {}
2647 |
2648 | thenify-all@1.6.0:
2649 | dependencies:
2650 | thenify: 3.3.1
2651 |
2652 | thenify@3.3.1:
2653 | dependencies:
2654 | any-promise: 1.3.0
2655 |
2656 | through@2.3.8: {}
2657 |
2658 | tmp@0.2.3: {}
2659 |
2660 | type-fest@1.4.0: {}
2661 |
2662 | type-fest@2.19.0: {}
2663 |
2664 | type-fest@3.13.1: {}
2665 |
2666 | typedarray-to-buffer@3.1.5:
2667 | dependencies:
2668 | is-typedarray: 1.0.0
2669 |
2670 | typedarray@0.0.6: {}
2671 |
2672 | uhyphen@0.2.0: {}
2673 |
2674 | undici-types@6.21.0: {}
2675 |
2676 | unique-string@3.0.0:
2677 | dependencies:
2678 | crypto-random-string: 4.0.0
2679 |
2680 | universalify@1.0.0: {}
2681 |
2682 | universalify@2.0.1: {}
2683 |
2684 | update-notifier@6.0.2:
2685 | dependencies:
2686 | boxen: 7.1.1
2687 | chalk: 5.4.1
2688 | configstore: 6.0.0
2689 | has-yarn: 3.0.0
2690 | import-lazy: 4.0.0
2691 | is-ci: 3.0.1
2692 | is-installed-globally: 0.4.0
2693 | is-npm: 6.0.0
2694 | is-yarn-global: 0.4.1
2695 | latest-version: 7.0.0
2696 | pupa: 3.1.0
2697 | semver: 7.7.1
2698 | semver-diff: 4.0.0
2699 | xdg-basedir: 5.1.0
2700 |
2701 | util-deprecate@1.0.2: {}
2702 |
2703 | uuid@8.3.2: {}
2704 |
2705 | vite-plugin-web-extension@4.4.3(@types/node@22.14.0)(lightningcss@1.29.2):
2706 | dependencies:
2707 | ajv: 8.17.1
2708 | async-lock: 1.4.1
2709 | fs-extra: 10.1.0
2710 | json5: 2.2.3
2711 | linkedom: 0.14.26
2712 | lodash.uniq: 4.5.0
2713 | lodash.uniqby: 4.7.0
2714 | md5: 2.3.0
2715 | vite: 5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)
2716 | web-ext-option-types: 8.3.1
2717 | web-ext-run: 0.2.2
2718 | webextension-polyfill: 0.10.0
2719 | yaml: 2.7.1
2720 | transitivePeerDependencies:
2721 | - '@types/node'
2722 | - bufferutil
2723 | - less
2724 | - lightningcss
2725 | - sass
2726 | - sass-embedded
2727 | - stylus
2728 | - sugarss
2729 | - supports-color
2730 | - terser
2731 | - utf-8-validate
2732 |
2733 | vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2):
2734 | dependencies:
2735 | esbuild: 0.21.5
2736 | postcss: 8.5.3
2737 | rollup: 4.39.0
2738 | optionalDependencies:
2739 | '@types/node': 22.14.0
2740 | fsevents: 2.3.3
2741 | lightningcss: 1.29.2
2742 |
2743 | vitefu@1.0.6(vite@5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)):
2744 | optionalDependencies:
2745 | vite: 5.4.18(@types/node@22.14.0)(lightningcss@1.29.2)
2746 |
2747 | watchpack@2.4.1:
2748 | dependencies:
2749 | glob-to-regexp: 0.4.1
2750 | graceful-fs: 4.2.11
2751 |
2752 | web-ext-option-types@8.3.1: {}
2753 |
2754 | web-ext-run@0.2.2:
2755 | dependencies:
2756 | '@babel/runtime': 7.24.7
2757 | '@devicefarmer/adbkit': 3.2.6
2758 | bunyan: 1.8.15
2759 | chrome-launcher: 1.1.0
2760 | debounce: 1.2.1
2761 | es6-error: 4.1.1
2762 | firefox-profile: 4.6.0
2763 | fs-extra: 11.2.0
2764 | fx-runner: 1.4.0
2765 | mkdirp: 3.0.1
2766 | multimatch: 6.0.0
2767 | mz: 2.7.0
2768 | node-notifier: 10.0.1
2769 | parse-json: 7.1.1
2770 | promise-toolbox: 0.21.0
2771 | set-value: 4.1.0
2772 | source-map-support: 0.5.21
2773 | strip-bom: 5.0.0
2774 | strip-json-comments: 5.0.1
2775 | tmp: 0.2.3
2776 | update-notifier: 6.0.2
2777 | watchpack: 2.4.1
2778 | ws: 8.18.0
2779 | zip-dir: 2.0.0
2780 | transitivePeerDependencies:
2781 | - bufferutil
2782 | - supports-color
2783 | - utf-8-validate
2784 |
2785 | webextension-polyfill@0.10.0: {}
2786 |
2787 | when@3.7.7: {}
2788 |
2789 | which@1.2.4:
2790 | dependencies:
2791 | is-absolute: 0.1.7
2792 | isexe: 1.1.2
2793 |
2794 | which@2.0.2:
2795 | dependencies:
2796 | isexe: 2.0.0
2797 |
2798 | widest-line@4.0.1:
2799 | dependencies:
2800 | string-width: 5.1.2
2801 |
2802 | winreg@0.0.12: {}
2803 |
2804 | wrap-ansi@8.1.0:
2805 | dependencies:
2806 | ansi-styles: 6.2.1
2807 | string-width: 5.1.2
2808 | strip-ansi: 7.1.0
2809 |
2810 | wrappy@1.0.2:
2811 | optional: true
2812 |
2813 | write-file-atomic@3.0.3:
2814 | dependencies:
2815 | imurmurhash: 0.1.4
2816 | is-typedarray: 1.0.0
2817 | signal-exit: 3.0.7
2818 | typedarray-to-buffer: 3.1.5
2819 |
2820 | ws@8.18.0: {}
2821 |
2822 | xdg-basedir@5.1.0: {}
2823 |
2824 | xml2js@0.5.0:
2825 | dependencies:
2826 | sax: 1.4.1
2827 | xmlbuilder: 11.0.1
2828 |
2829 | xmlbuilder@11.0.1: {}
2830 |
2831 | yaml@2.7.1: {}
2832 |
2833 | zimmerframe@1.1.2: {}
2834 |
2835 | zip-dir@2.0.0:
2836 | dependencies:
2837 | async: 3.2.6
2838 | jszip: 3.10.1
2839 |
--------------------------------------------------------------------------------
/public/icon/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dnakov/claude-mcp/39264c0e2ebcbd8195d58c7a088bd4a8d762c5ef/public/icon/128.png
--------------------------------------------------------------------------------
/public/icon/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dnakov/claude-mcp/39264c0e2ebcbd8195d58c7a088bd4a8d762c5ef/public/icon/16.png
--------------------------------------------------------------------------------
/public/icon/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dnakov/claude-mcp/39264c0e2ebcbd8195d58c7a088bd4a8d762c5ef/public/icon/32.png
--------------------------------------------------------------------------------
/public/icon/48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dnakov/claude-mcp/39264c0e2ebcbd8195d58c7a088bd4a8d762c5ef/public/icon/48.png
--------------------------------------------------------------------------------
/public/icon/96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dnakov/claude-mcp/39264c0e2ebcbd8195d58c7a088bd4a8d762c5ef/public/icon/96.png
--------------------------------------------------------------------------------
/src/content.js:
--------------------------------------------------------------------------------
1 | // Content script running in world: MAIN on claude.ai
2 | // This means we're running in the page's JavaScript context, not the extension context
3 | // We can access Claude's React components but NOT extension APIs
4 |
5 | // import 'bippy';
6 | import { MCPConnection } from './mcp-connection';
7 | import { log, setStorage } from './utils';
8 |
9 | let mcpServers = [];
10 |
11 | // Set up a connection to a server
12 | function createServerConnection(server, handler) {
13 | log(`[MCP Client] Creating connection to ${server.name}`);
14 |
15 | try {
16 | // Create configuration for the MCPConnection
17 | const connectionConfig = {
18 | connectionType: 'sse',
19 | transportType: 'stdio',
20 | url: server.url,
21 | command: server.command,
22 | args: server.args,
23 | env: server.env
24 | };
25 |
26 | // Create the MCPConnection
27 | const connection = new MCPConnection(server.name, connectionConfig);
28 |
29 | // Start connecting in the background
30 | connection.connect(handler)
31 | .then(result => {
32 | log(`[MCP Client] Successfully connected to ${server.name}:`, result);
33 | // Trigger an update of the injected clients to refresh with the new connection
34 | // updateInjectedClients();
35 | })
36 | .catch(error => {
37 | console.error(`[MCP Client] Failed to connect to ${server.name}:`, error);
38 | });
39 |
40 | return connection;
41 | } catch (e) {
42 | console.error(`[MCP Client] Error creating connection to ${server.name}:`, e);
43 | return null;
44 | }
45 | }
46 |
47 | // Listen for messages from other scripts
48 | window.addEventListener('message', (event) => {
49 | // Log messages for debugging
50 | log('[MCP Client] Received window message:', event.data);
51 |
52 | // Only accept messages from the same frame
53 | if (event.source !== window) {
54 | return;
55 | }
56 |
57 | // Special case: filter out our own messages
58 | if (event.data && event.data.source === 'main-content') {
59 | log('[MCP Client] Ignoring our own message');
60 | return;
61 | }
62 |
63 | // Process messages by type
64 | if (event.data && event.data.type) {
65 | switch (event.data.type) {
66 | case 'mcp-ext-storage-updated':
67 | log('[MCP Client] Received storage from extension:', event.data.data);
68 | setStorage(event.data.data);
69 | break;
70 |
71 | case 'mcp-servers-updated':
72 | if (Array.isArray(event.data?.data?.servers)) {
73 | log('[MCP Client] Received servers from extension:', event.data.data.servers);
74 | mcpServers = event.data.data.servers;
75 | for(let server of mcpServers) {
76 | const channel = new MessageChannel();
77 | const port1 = channel.port1;
78 | const port2 = channel.port2;
79 | port1.onmessage = (event) => {
80 | log('[MCP Client] Received message from port1:', event);
81 | connection.sendRequest(event.data);
82 | };
83 | const handler = (message) => {
84 | log('[MCP Client] Received message from server:', message);
85 | port1.postMessage(message);
86 | };
87 | port1.start();
88 | const connection = createServerConnection(server, handler);
89 | log(server, connection)
90 | setTimeout(() => {
91 | window.postMessage({
92 | source: 'main-content',
93 | type: 'mcp-server-connected',
94 | serverName: server.name
95 | }, '*', [port2]);
96 | }, 1000);
97 | }
98 |
99 | } else {
100 | console.warn('[MCP Client] Received malformed servers data:', event.data);
101 | }
102 | break;
103 | }
104 | }
105 | });
--------------------------------------------------------------------------------
/src/isolated-content.js:
--------------------------------------------------------------------------------
1 | const extensionAPI = globalThis.chrome || globalThis.browser;
2 |
3 | let initialLoad = true;
4 |
5 | async function getAndSendStorage() {
6 | try {
7 | const data = await extensionAPI.storage.local.get();
8 |
9 | // Send to MAIN world
10 | window.postMessage({
11 | type: 'mcp-ext-storage-updated',
12 | source: 'isolated-content',
13 | data: data
14 | }, '*');
15 | if(initialLoad) {
16 | initialLoad = false;
17 | window.postMessage({
18 | type: 'mcp-servers-updated',
19 | source: 'isolated-content',
20 | data: {
21 | servers: Object.values(data.mcpServers || {})
22 | }
23 | }, '*');
24 | }
25 | } catch (error) {
26 | console.error('[Claude MCP Manager] Error getting storage:', error);
27 | }
28 | }
29 |
30 | // Listen for requests from MAIN world
31 | window.addEventListener('message', (event) => {
32 | // console.log('[Claude MCP Manager] Got message in ISOLATED world:', event.data);
33 |
34 | // if (event.source !== window) return;
35 |
36 | // if (event.data && event.data.type === 'mcp-ext-storage-updated') {
37 | // console.log('[Claude MCP Manager] Got request for storage, sending from storage');
38 | // getAndSendStorage();
39 | // }
40 | });
41 |
42 | extensionAPI.storage.onChanged.addListener((changes, area) => {
43 | if (area === 'local') {
44 | getAndSendStorage();
45 | }
46 | for(let key in changes) {
47 | if(key === 'mcpServers') {
48 | window.postMessage({
49 | type: 'mcp-servers-updated',
50 | source: 'isolated-content',
51 | data: {
52 | servers: Object.values(changes[key].newValue || {})
53 | }
54 | }, '*');
55 | }
56 | }
57 | });
58 |
59 | getAndSendStorage();
60 |
--------------------------------------------------------------------------------
/src/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "{{chrome}}.manifest_version": 3,
3 | "{{firefox}}.manifest_version": 2,
4 | "name": "MCP for claude.ai",
5 | "description": "Enable MCP on claude.ai",
6 | "version": "1.0.0",
7 | "icons": {
8 | "16": "icon/16.png",
9 | "32": "icon/32.png",
10 | "48": "icon/48.png",
11 | "96": "icon/96.png",
12 | "128": "icon/128.png"
13 | },
14 | "{{chrome}}.action": {
15 | "default_popup": "src/popup.html"
16 | },
17 | "{{firefox}}.browser_action": {
18 | "default_popup": "src/popup.html"
19 | },
20 | "content_scripts": [
21 | {
22 | "matches": ["*://claude.ai/*"],
23 | "js": ["src/content.js"],
24 | "{{chrome}}.world": "MAIN",
25 | "run_at": "document_start"
26 | },
27 | {
28 | "matches": ["*://claude.ai/*"],
29 | "js": ["src/isolated-content.js"],
30 | "{{chrome}}.world": "ISOLATED",
31 | "run_at": "document_start"
32 | }
33 | ],
34 | "{{chrome}}.web_accessible_resources": [
35 | {
36 | "resources": ["src/content.js", "src/isolated-content.js"],
37 | "matches": ["*://claude.ai/*"]
38 | }
39 | ],
40 | "{{firefox}}.web_accessible_resources": ["src/content.js", "src/isolated-content.js"],
41 | "permissions": [
42 | "storage"
43 | ],
44 | "host_permissions": [
45 | "*://claude.ai/*"
46 | ]
47 | }
48 |
--------------------------------------------------------------------------------
/src/mcp-connection.js:
--------------------------------------------------------------------------------
1 | import { log } from './utils';
2 | export class MCPConnection {
3 | constructor(name, config) {
4 | this.name = name;
5 | this.config = {
6 | // Default configuration
7 | connectionType: 'sse',
8 | transportType: 'stdio',
9 | ...config
10 | };
11 | this.eventSource = null;
12 | this.messageEndpoint = null;
13 | this.initialized = false;
14 | this.capabilities = null;
15 | this.serverInfo = null;
16 | this.resources = new Map();
17 | this.tools = new Map();
18 | this.subscriptions = new Map();
19 | this.messageHandler = null;
20 | this.reconnectAttempts = 0;
21 | this.maxReconnectAttempts = 5;
22 | this.reconnectDelay = 1000; // Start with 1 second delay
23 | this.sessionId = null;
24 |
25 | // Log configuration
26 | log(`[MCP ${this.name}] Initialized with config:`, {
27 | connectionType: this.config.connectionType,
28 | transportType: this.config.transportType,
29 | command: this.config.command,
30 | args: this.config.args,
31 | env: this.config.env ? '(env data present)' : undefined,
32 | url: this.config.url
33 | });
34 | }
35 |
36 | // Initialize connection and handle lifecycle
37 | async connect(handler) {
38 | this.messageHandler = handler; // Store handler for reconnection
39 | log(`[MCP ${this.name}] Connecting with config:`, this.config);
40 | log(`[MCP ${this.name}] Connection type:`, this.config.connectionType || 'default (ws)');
41 |
42 | if (this.config.connectionType === 'sse') {
43 | log(`[MCP ${this.name}] Using SSE connection`);
44 | return this.connectSSE(handler);
45 | } else {
46 | console.error(`[MCP ${this.name}] Unsupported connection type:`, this.config.connectionType);
47 | return null;
48 | }
49 | }
50 |
51 | async connectSSE(handler) {
52 | try {
53 | // Parse and validate URL
54 | const sseUrl = new URL(this.config.url);
55 |
56 | if(this.config.command?.trim()?.length > 0) {
57 | // Add transportType parameter (required for SSE)
58 | if (!sseUrl.searchParams.has('transportType')) {
59 | sseUrl.searchParams.set('transportType', this.config.transportType || 'stdio');
60 | }
61 |
62 | // Add command parameter if specified and not empty
63 | if (this.config.command && this.config.command.trim()) {
64 | sseUrl.searchParams.set('command', this.config.command);
65 | }
66 |
67 | // Add args parameter if specified and not empty
68 | if (this.config.args) {
69 | let argsValue = '';
70 | if (Array.isArray(this.config.args)) {
71 | argsValue = this.config.args.filter(arg => arg).join(' ');
72 | } else if (typeof this.config.args === 'string') {
73 | argsValue = this.config.args.trim();
74 | }
75 |
76 | if (argsValue) {
77 | sseUrl.searchParams.set('args', argsValue);
78 | }
79 | }
80 | }
81 |
82 | // Add environment variables as query parameters if specified
83 | if (this.config.env) {
84 | let envData = this.config.env;
85 |
86 | // If env is already a string and looks like JSON, parse it
87 | if (typeof envData === 'string') {
88 | try {
89 | envData = JSON.parse(envData);
90 | } catch (e) {
91 | console.error(`[MCP ${this.name}] Invalid JSON in env string:`, e);
92 | envData = {};
93 | }
94 | }
95 |
96 | // Only add env parameter if it's not an empty object
97 | if (typeof envData === 'object' && Object.keys(envData).length > 0) {
98 | sseUrl.searchParams.set('env', encodeURIComponent(JSON.stringify(envData)));
99 | }
100 | }
101 |
102 | // If we have a session ID from previous connection, reuse it
103 | if (this.sessionId) {
104 | sseUrl.searchParams.set('session_id', this.sessionId);
105 | }
106 |
107 | log(`[MCP ${this.name}] Connecting to SSE URL:`, sseUrl.toString());
108 | log(`[MCP ${this.name}] Query parameters:`, Object.fromEntries(sseUrl.searchParams));
109 |
110 | return new Promise((resolve, reject) => {
111 | // Create EventSource - don't try to add auth headers here
112 | this.eventSource = new EventSource(sseUrl.toString());
113 | let reconnectAttempt = this.reconnectAttempts > 0;
114 |
115 | this.eventSource.onopen = () => {
116 | log(`[MCP ${this.name}] SSE connection opened`);
117 | // Reset reconnect attempts on successful connection
118 | this.reconnectAttempts = 0;
119 | this.reconnectDelay = 1000;
120 | };
121 |
122 | // Handle endpoint event
123 | this.eventSource.addEventListener('endpoint', (event) => {
124 | try {
125 | this.messageEndpoint = new URL(event.data, sseUrl.origin);
126 | log(`[MCP ${this.name}] Got message endpoint:`, this.messageEndpoint);
127 |
128 | // Extract session_id from the URL if present
129 | const urlParams = new URLSearchParams(this.messageEndpoint.search);
130 | if (urlParams.has('session_id')) {
131 | this.sessionId = urlParams.get('session_id');
132 | log(`[MCP ${this.name}] Got session ID:`, this.sessionId);
133 | }
134 |
135 | // If this is a reconnect, we need to reinitialize
136 | if (reconnectAttempt) {
137 | this._sendInitializeRequest()
138 | .then(() => {
139 | log(`[MCP ${this.name}] Successfully reinitialized after reconnect`);
140 | this.initialized = true;
141 | resolve(this);
142 | })
143 | .catch(err => {
144 | console.error(`[MCP ${this.name}] Failed to reinitialize after reconnect:`, err);
145 | this.disconnect();
146 | reject(err);
147 | });
148 | } else {
149 | // For initial connection, just send initialize request
150 | this._sendInitializeRequest()
151 | .then(() => {
152 | this.initialized = true;
153 | resolve(this);
154 | })
155 | .catch(err => {
156 | console.error(`[MCP ${this.name}] Failed to initialize:`, err);
157 | this.disconnect();
158 | reject(err);
159 | });
160 | }
161 | } catch (e) {
162 | console.error(`[MCP ${this.name}] Failed to parse endpoint:`, e);
163 | this.disconnect();
164 | reject(e);
165 | }
166 | });
167 |
168 | // Handle regular messages
169 | this.eventSource.addEventListener('message', (event) => {
170 | try {
171 | const message = JSON.parse(event.data);
172 | log(`[MCP ${this.name}] SSE message:`, message);
173 | handler(message);
174 | } catch (e) {
175 | console.error(`[MCP ${this.name}] Failed to parse message:`, e);
176 | }
177 | });
178 |
179 | this.eventSource.onerror = (error) => {
180 | console.error(`[MCP ${this.name}] SSE error:`, error);
181 |
182 | // If we're already initialized, try to reconnect
183 | if (this.initialized) {
184 | this.initialized = false; // Mark as not initialized during reconnection
185 |
186 | // Close the current connection
187 | if (this.eventSource) {
188 | this.eventSource.close();
189 | this.eventSource = null;
190 | }
191 |
192 | // If we haven't exceeded max reconnect attempts, try to reconnect
193 | if (this.reconnectAttempts < this.maxReconnectAttempts) {
194 | this.reconnectAttempts++;
195 | log(`[MCP ${this.name}] Attempting SSE reconnection (Attempt ${this.reconnectAttempts})`);
196 |
197 | // Use exponential backoff for reconnect delay
198 | setTimeout(() => {
199 | this.connectSSE(handler)
200 | .then(conn => {
201 | log(`[MCP ${this.name}] Successfully reconnected`);
202 | })
203 | .catch(err => {
204 | console.error(`[MCP ${this.name}] Failed to reconnect:`, err);
205 | });
206 | }, this.reconnectDelay);
207 |
208 | // Increase delay for next attempt (exponential backoff with max of 30 seconds)
209 | this.reconnectDelay = Math.min(this.reconnectDelay * 2, 30000);
210 | } else {
211 | console.error(`[MCP ${this.name}] Max reconnect attempts reached`);
212 | this.disconnect();
213 | }
214 | } else {
215 | // Initial connection failed
216 | console.error(`[MCP ${this.name}] Initial SSE connection failed`);
217 | this.disconnect();
218 | reject(new Error('SSE connection failed'));
219 | }
220 | };
221 |
222 | // Set connection timeout
223 | setTimeout(() => {
224 | if (!this.initialized) {
225 | log(`[MCP ${this.name}] Connection timeout`);
226 | this.disconnect();
227 | reject(new Error('Connection timeout'));
228 | }
229 | }, 10000);
230 | });
231 | } catch (error) {
232 | console.error(`[MCP ${this.name}] SSE connection error:`, error);
233 | throw error;
234 | }
235 | }
236 |
237 | // Send MCP initialize request according to the protocol
238 | async _sendInitializeRequest() {
239 | log(`[MCP ${this.name}] Entering _sendInitializeRequest.`);
240 |
241 | // Create initialize request according to MCP protocol
242 | const initializeRequest = {
243 | jsonrpc: "2.0",
244 | id: this.getNextId(),
245 | method: "initialize",
246 | params: {
247 | protocolVersion: "2024-11-05",
248 | capabilities: {
249 | roots: {
250 | listChanged: true
251 | },
252 | sampling: {}
253 | },
254 | clientInfo: {
255 | name: "MCPClient",
256 | version: "1.0.0"
257 | }
258 | }
259 | };
260 |
261 | // Send the initialize request
262 | log(`[MCP ${this.name}] Sending initialize POST to ${this.messageEndpoint} with payload:`, initializeRequest);
263 |
264 | try {
265 | const response = await fetch(this.messageEndpoint, {
266 | method: 'POST',
267 | headers: {
268 | 'Content-Type': 'application/json',
269 | ...(this.config.authHeader ? { 'Authorization': this.config.authHeader } : {})
270 | },
271 | body: JSON.stringify(initializeRequest)
272 | });
273 |
274 | if (response.ok) {
275 | log(`[MCP ${this.name}] Initialize request sent successfully (Status: ${response.status}). Waiting for initialize event via SSE.`);
276 |
277 | // After successful initialize request, send initialized notification
278 | await this._sendInitializedNotification();
279 | return true;
280 | } else {
281 | const errorText = await response.text();
282 | throw new Error(`Initialize request failed: ${response.status} ${errorText}`);
283 | }
284 | } catch (error) {
285 | console.error(`[MCP ${this.name}] Initialize request failed:`, error);
286 | throw error;
287 | }
288 | }
289 |
290 | // Send MCP initialized notification according to the protocol
291 | async _sendInitializedNotification() {
292 | // Create initialized notification according to MCP protocol
293 | const initializedNotification = {
294 | jsonrpc: "2.0",
295 | method: "notifications/initialized"
296 | };
297 |
298 | // Send the initialized notification
299 | try {
300 | const response = await fetch(this.messageEndpoint, {
301 | method: 'POST',
302 | headers: {
303 | 'Content-Type': 'application/json',
304 | ...(this.config.authHeader ? { 'Authorization': this.config.authHeader } : {})
305 | },
306 | body: JSON.stringify(initializedNotification)
307 | });
308 |
309 | if (response.ok) {
310 | log(`[MCP ${this.name}] Initialized notification sent successfully (Status: ${response.status}).`);
311 | return true;
312 | } else {
313 | const errorText = await response.text();
314 | throw new Error(`Initialized notification failed: ${response.status} ${errorText}`);
315 | }
316 | } catch (error) {
317 | console.error(`[MCP ${this.name}] Initialized notification failed:`, error);
318 | throw error;
319 | }
320 | }
321 |
322 | // Handle incoming messages
323 | async handleMessage(message, resolve, reject) {
324 | log('Received message:', message);
325 | if(this.onMessage) {
326 | return this.onMessage(message);
327 | }
328 | return;
329 | }
330 |
331 | async sendRequest(request) {
332 | // If we're not initialized, try to reconnect first
333 | if (!this.initialized && this.messageHandler) {
334 | try {
335 | log(`[MCP ${this.name}] Connection not initialized, attempting to reconnect before sending request`);
336 | await this.connectSSE(this.messageHandler);
337 | } catch (error) {
338 | console.error(`[MCP ${this.name}] Failed to reconnect:`, error);
339 | return {
340 | error: {
341 | code: -1,
342 | message: "Connection not initialized and reconnect failed"
343 | }
344 | };
345 | }
346 | }
347 |
348 | if (this.config.connectionType === 'sse') {
349 | log(`[MCP ${this.name}] Sending SSE request to ${this.messageEndpoint}:`, request);
350 | try {
351 | const response = await fetch(this.messageEndpoint, {
352 | method: 'POST',
353 | headers: {
354 | 'Content-Type': 'application/json',
355 | ...(this.config.authHeader ? { 'Authorization': this.config.authHeader } : {})
356 | },
357 | body: JSON.stringify(request)
358 | });
359 |
360 | // Check if response is JSON
361 | const contentType = response.headers.get('content-type');
362 | log(`[MCP ${this.name}] Response content type:`, contentType);
363 |
364 | if (contentType && contentType.includes('application/json')) {
365 | const json = await response.json();
366 | log(`[MCP ${this.name}] JSON response:`, json);
367 | return json;
368 | }
369 |
370 | // If not JSON, just return success object
371 | if (response.ok) {
372 | log(`[MCP ${this.name}] Non-JSON success response`);
373 | return { result: { success: true } };
374 | }
375 |
376 | // If error, return error object
377 | const errorText = await response.text();
378 | console.error(`[MCP ${this.name}] Request error:`, response.status, errorText);
379 | return {
380 | error: {
381 | code: response.status,
382 | message: errorText
383 | }
384 | };
385 | } catch (error) {
386 | console.error(`[MCP ${this.name}] Request failed:`, error);
387 | return {
388 | error: {
389 | code: -1,
390 | message: error.message
391 | }
392 | };
393 | }
394 | } else {
395 | return new Promise((resolve, reject) => {
396 | const id = request.id;
397 | const handler = (event) => {
398 | try {
399 | const response = JSON.parse(event.data);
400 | if (response.id === id) {
401 | this.ws.removeEventListener('message', handler);
402 | resolve(response);
403 | }
404 | } catch (e) {
405 | reject(e);
406 | }
407 | };
408 | this.ws.addEventListener('message', handler);
409 | this.ws.send(JSON.stringify(request));
410 | });
411 | }
412 | }
413 |
414 | // Get next request ID
415 | getNextId() {
416 | return Math.floor(Math.random() * 1000000);
417 | }
418 |
419 | // Notify about resource changes
420 | notifyResourcesChanged() {
421 | // This method would trigger any listeners or callbacks for resource changes
422 | log(`[MCP ${this.name}] Resources changed, now have ${this.resources.size} resources`);
423 | }
424 |
425 | // Notify about tool changes
426 | notifyToolsChanged() {
427 | // This method would trigger any listeners or callbacks for tool changes
428 | log(`[MCP ${this.name}] Tools changed, now have ${this.tools.size} tools`);
429 | }
430 |
431 | // Disconnect and cleanup
432 | disconnect() {
433 | if (this.eventSource) {
434 | this.eventSource.close();
435 | this.eventSource = null;
436 | }
437 | if (this.ws) {
438 | this.ws.close();
439 | this.ws = null;
440 | }
441 | this.initialized = false;
442 | this.capabilities = null;
443 | this.serverInfo = null;
444 | this.resources.clear();
445 | this.tools.clear();
446 | this.subscriptions.clear();
447 |
448 | log(`[MCP ${this.name}] Disconnected`);
449 | }
450 | }
--------------------------------------------------------------------------------
/src/pages/Popup.svelte:
--------------------------------------------------------------------------------
1 |
208 |
209 |