├── .changeset ├── README.md └── config.json ├── .gitignore ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src └── index.ts └── tsconfig.json /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@3.0.5/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | node_modules/ 3 | .pnpm-store/ 4 | 5 | # Build output 6 | dist/ 7 | build/ 8 | 9 | # Environment variables 10 | .env 11 | .env.local 12 | .env.*.local 13 | 14 | # IDE 15 | .vscode/ 16 | .idea/ 17 | *.swp 18 | *.swo 19 | 20 | # Logs 21 | *.log 22 | npm-debug.log* 23 | pnpm-debug.log* 24 | 25 | # Testing 26 | coverage/ 27 | 28 | # Database files 29 | *.db 30 | *.db-journal 31 | 32 | # OS 33 | .DS_Store 34 | Thumbs.db -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "printWidth": 70, 6 | "proseWrap": "always" 7 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # mcp-jinaai-reader 2 | 3 | ## 0.0.4 4 | 5 | ### Patch Changes 6 | 7 | - fix: update README.md for mcp-jinaai-reader configuration 8 | 9 | ## 0.0.3 10 | 11 | ### Patch Changes 12 | 13 | - add glama banner 14 | 15 | ## 0.0.2 16 | 17 | ### Patch Changes 18 | 19 | - update for publish to npm 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Scott Spence 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mcp-jinaai-reader 2 | --- 3 | 4 | ## ⚠️ Notice 5 | 6 | **This repository is no longer maintained.** 7 | 8 | The functionality of this tool is now available in [mcp-omnisearch](https://github.com/spences10/mcp-omnisearch), which combines multiple MCP tools in one unified package. 9 | 10 | Please use [mcp-omnisearch](https://github.com/spences10/mcp-omnisearch) instead. 11 | 12 | --- 13 | 14 | A Model Context Protocol (MCP) server for integrating Jina.ai's Reader 15 | API with LLMs. This server provides efficient and comprehensive web 16 | content extraction capabilities, optimized for documentation and web 17 | content analysis. 18 | 19 | 20 | 21 | 22 | 23 | ## Features 24 | 25 | - 📚 Advanced web content extraction through Jina.ai Reader API 26 | - 🚀 Fast and efficient content retrieval 27 | - 📄 Complete text extraction with preserved structure 28 | - 🔄 Clean format optimized for LLMs 29 | - 🌐 Support for various content types including documentation 30 | - 🏗️ Built on the Model Context Protocol 31 | 32 | ## Configuration 33 | 34 | This server requires configuration through your MCP client. Here are 35 | examples for different environments: 36 | 37 | ### Cline Configuration 38 | 39 | Add this to your Cline MCP settings: 40 | 41 | ```json 42 | { 43 | "mcpServers": { 44 | "jinaai-reader": { 45 | "command": "node", 46 | "args": ["-y", "mcp-jinaai-reader"], 47 | "env": { 48 | "JINAAI_API_KEY": "your-jinaai-api-key" 49 | } 50 | } 51 | } 52 | } 53 | ``` 54 | 55 | ### Claude Desktop with WSL Configuration 56 | 57 | For WSL environments, add this to your Claude Desktop configuration: 58 | 59 | ```json 60 | { 61 | "mcpServers": { 62 | "jinaai-reader": { 63 | "command": "wsl.exe", 64 | "args": [ 65 | "bash", 66 | "-c", 67 | "JINAAI_API_KEY=your-jinaai-api-key npx mcp-jinaai-reader" 68 | ] 69 | } 70 | } 71 | } 72 | ``` 73 | 74 | ### Environment Variables 75 | 76 | The server requires the following environment variable: 77 | 78 | - `JINAAI_API_KEY`: Your Jina.ai API key (required) 79 | 80 | ## API 81 | 82 | The server implements a single MCP tool with configurable parameters: 83 | 84 | ### read_url 85 | 86 | Convert any URL to LLM-friendly text using Jina.ai Reader. 87 | 88 | Parameters: 89 | 90 | - `url` (string, required): URL to process 91 | - `no_cache` (boolean, optional): Bypass cache for fresh results. 92 | Defaults to false 93 | - `format` (string, optional): Response format ("json" or "stream"). 94 | Defaults to "json" 95 | - `timeout` (number, optional): Maximum time in seconds to wait for 96 | webpage load 97 | - `target_selector` (string, optional): CSS selector to focus on 98 | specific elements 99 | - `wait_for_selector` (string, optional): CSS selector to wait for 100 | specific elements 101 | - `remove_selector` (string, optional): CSS selector to exclude 102 | specific elements 103 | - `with_links_summary` (boolean, optional): Gather all links at the 104 | end of response 105 | - `with_images_summary` (boolean, optional): Gather all images at the 106 | end of response 107 | - `with_generated_alt` (boolean, optional): Add alt text to images 108 | lacking captions 109 | - `with_iframe` (boolean, optional): Include iframe content in 110 | response 111 | 112 | ## Development 113 | 114 | ### Setup 115 | 116 | 1. Clone the repository 117 | 2. Install dependencies: 118 | 119 | ```bash 120 | npm install 121 | ``` 122 | 123 | 3. Build the project: 124 | 125 | ```bash 126 | npm run build 127 | ``` 128 | 129 | 4. Run in development mode: 130 | 131 | ```bash 132 | npm run dev 133 | ``` 134 | 135 | ### Publishing 136 | 137 | 1. Update version in package.json 138 | 2. Build the project: 139 | 140 | ```bash 141 | npm run build 142 | ``` 143 | 144 | 3. Publish to npm: 145 | 146 | ```bash 147 | npm publish 148 | ``` 149 | 150 | ## Contributing 151 | 152 | Contributions are welcome! Please feel free to submit a Pull Request. 153 | 154 | ## License 155 | 156 | MIT License - see the [LICENSE](LICENSE) file for details. 157 | 158 | ## Acknowledgments 159 | 160 | - Built on the 161 | [Model Context Protocol](https://github.com/modelcontextprotocol) 162 | - Powered by [Jina.ai Reader API](https://jina.ai) 163 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mcp-jinaai-reader", 3 | "version": "0.0.4", 4 | "description": "MCP server for JinaAI reader", 5 | "type": "module", 6 | "main": "dist/index.js", 7 | "types": "dist/index.d.ts", 8 | "bin": { 9 | "mcp-jinaai-reader": "./dist/index.js" 10 | }, 11 | "files": [ 12 | "dist", 13 | "README.md", 14 | "LICENSE" 15 | ], 16 | "scripts": { 17 | "build": "tsc && chmod +x dist/index.js", 18 | "start": "node dist/index.js", 19 | "dev": "npx @modelcontextprotocol/inspector dist/index.js", 20 | "changeset": "changeset", 21 | "version": "changeset version", 22 | "release": "pnpm run build && changeset publish" 23 | }, 24 | "keywords": [ 25 | "mcp", 26 | "model-context-protocol", 27 | "jinaai", 28 | "reader", 29 | "web-content", 30 | "documentation", 31 | "content-extraction", 32 | "text-extraction", 33 | "llm", 34 | "ai", 35 | "web-scraping", 36 | "content-parser" 37 | ], 38 | "author": "Scott Spence", 39 | "license": "MIT", 40 | "repository": { 41 | "type": "git", 42 | "url": "https://github.com/spences10/mcp-jinaai-reader.git" 43 | }, 44 | "bugs": { 45 | "url": "https://github.com/spences10/mcp-jinaai-reader/issues" 46 | }, 47 | "homepage": "https://github.com/spences10/mcp-jinaai-reader#readme", 48 | "dependencies": { 49 | "@modelcontextprotocol/sdk": "1.8.0" 50 | }, 51 | "devDependencies": { 52 | "@changesets/cli": "^2.28.1", 53 | "@types/node": "^22.13.14", 54 | "typescript": "^5.8.2" 55 | } 56 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@modelcontextprotocol/sdk': 12 | specifier: 1.8.0 13 | version: 1.8.0 14 | devDependencies: 15 | '@changesets/cli': 16 | specifier: ^2.28.1 17 | version: 2.28.1 18 | '@types/node': 19 | specifier: ^22.13.14 20 | version: 22.14.0 21 | typescript: 22 | specifier: ^5.8.2 23 | version: 5.8.3 24 | 25 | packages: 26 | 27 | '@babel/runtime@7.26.9': 28 | resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} 29 | engines: {node: '>=6.9.0'} 30 | 31 | '@changesets/apply-release-plan@7.0.10': 32 | resolution: {integrity: sha512-wNyeIJ3yDsVspYvHnEz1xQDq18D9ifed3lI+wxRQRK4pArUcuHgCTrHv0QRnnwjhVCQACxZ+CBih3wgOct6UXw==} 33 | 34 | '@changesets/assemble-release-plan@6.0.6': 35 | resolution: {integrity: sha512-Frkj8hWJ1FRZiY3kzVCKzS0N5mMwWKwmv9vpam7vt8rZjLL1JMthdh6pSDVSPumHPshTTkKZ0VtNbE0cJHZZUg==} 36 | 37 | '@changesets/changelog-git@0.2.1': 38 | resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} 39 | 40 | '@changesets/cli@2.28.1': 41 | resolution: {integrity: sha512-PiIyGRmSc6JddQJe/W1hRPjiN4VrMvb2VfQ6Uydy2punBioQrsxppyG5WafinKcW1mT0jOe/wU4k9Zy5ff21AA==} 42 | hasBin: true 43 | 44 | '@changesets/config@3.1.1': 45 | resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} 46 | 47 | '@changesets/errors@0.2.0': 48 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} 49 | 50 | '@changesets/get-dependents-graph@2.1.3': 51 | resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} 52 | 53 | '@changesets/get-release-plan@4.0.8': 54 | resolution: {integrity: sha512-MM4mq2+DQU1ZT7nqxnpveDMTkMBLnwNX44cX7NSxlXmr7f8hO6/S2MXNiXG54uf/0nYnefv0cfy4Czf/ZL/EKQ==} 55 | 56 | '@changesets/get-version-range-type@0.4.0': 57 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} 58 | 59 | '@changesets/git@3.0.2': 60 | resolution: {integrity: sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==} 61 | 62 | '@changesets/logger@0.1.1': 63 | resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} 64 | 65 | '@changesets/parse@0.4.1': 66 | resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} 67 | 68 | '@changesets/pre@2.0.2': 69 | resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} 70 | 71 | '@changesets/read@0.6.3': 72 | resolution: {integrity: sha512-9H4p/OuJ3jXEUTjaVGdQEhBdqoT2cO5Ts95JTFsQyawmKzpL8FnIeJSyhTDPW1MBRDnwZlHFEM9SpPwJDY5wIg==} 73 | 74 | '@changesets/should-skip-package@0.1.2': 75 | resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} 76 | 77 | '@changesets/types@4.1.0': 78 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 79 | 80 | '@changesets/types@6.1.0': 81 | resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} 82 | 83 | '@changesets/write@0.4.0': 84 | resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} 85 | 86 | '@manypkg/find-root@1.1.0': 87 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 88 | 89 | '@manypkg/get-packages@1.1.3': 90 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 91 | 92 | '@modelcontextprotocol/sdk@1.8.0': 93 | resolution: {integrity: sha512-e06W7SwrontJDHwCawNO5SGxG+nU9AAx+jpHHZqGl/WrDBdWOpvirC+s58VpJTB5QemI4jTRcjWT4Pt3Q1NPQQ==} 94 | engines: {node: '>=18'} 95 | 96 | '@nodelib/fs.scandir@2.1.5': 97 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 98 | engines: {node: '>= 8'} 99 | 100 | '@nodelib/fs.stat@2.0.5': 101 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 102 | engines: {node: '>= 8'} 103 | 104 | '@nodelib/fs.walk@1.2.8': 105 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 106 | engines: {node: '>= 8'} 107 | 108 | '@types/node@12.20.55': 109 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 110 | 111 | '@types/node@22.14.0': 112 | resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} 113 | 114 | accepts@2.0.0: 115 | resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} 116 | engines: {node: '>= 0.6'} 117 | 118 | ansi-colors@4.1.3: 119 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 120 | engines: {node: '>=6'} 121 | 122 | ansi-regex@5.0.1: 123 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 124 | engines: {node: '>=8'} 125 | 126 | argparse@1.0.10: 127 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 128 | 129 | array-union@2.1.0: 130 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 131 | engines: {node: '>=8'} 132 | 133 | better-path-resolve@1.0.0: 134 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 135 | engines: {node: '>=4'} 136 | 137 | body-parser@2.1.0: 138 | resolution: {integrity: sha512-/hPxh61E+ll0Ujp24Ilm64cykicul1ypfwjVttduAiEdtnJFvLePSrIPk+HMImtNv5270wOGCb1Tns2rybMkoQ==} 139 | engines: {node: '>=18'} 140 | 141 | braces@3.0.3: 142 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 143 | engines: {node: '>=8'} 144 | 145 | bytes@3.1.2: 146 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 147 | engines: {node: '>= 0.8'} 148 | 149 | call-bind-apply-helpers@1.0.2: 150 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 151 | engines: {node: '>= 0.4'} 152 | 153 | call-bound@1.0.4: 154 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 155 | engines: {node: '>= 0.4'} 156 | 157 | chardet@0.7.0: 158 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 159 | 160 | ci-info@3.9.0: 161 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 162 | engines: {node: '>=8'} 163 | 164 | content-disposition@1.0.0: 165 | resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} 166 | engines: {node: '>= 0.6'} 167 | 168 | content-type@1.0.5: 169 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 170 | engines: {node: '>= 0.6'} 171 | 172 | cookie-signature@1.2.2: 173 | resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} 174 | engines: {node: '>=6.6.0'} 175 | 176 | cookie@0.7.1: 177 | resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} 178 | engines: {node: '>= 0.6'} 179 | 180 | cors@2.8.5: 181 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 182 | engines: {node: '>= 0.10'} 183 | 184 | cross-spawn@7.0.6: 185 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 186 | engines: {node: '>= 8'} 187 | 188 | debug@4.3.6: 189 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} 190 | engines: {node: '>=6.0'} 191 | peerDependencies: 192 | supports-color: '*' 193 | peerDependenciesMeta: 194 | supports-color: 195 | optional: true 196 | 197 | debug@4.4.0: 198 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 199 | engines: {node: '>=6.0'} 200 | peerDependencies: 201 | supports-color: '*' 202 | peerDependenciesMeta: 203 | supports-color: 204 | optional: true 205 | 206 | depd@2.0.0: 207 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 208 | engines: {node: '>= 0.8'} 209 | 210 | destroy@1.2.0: 211 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 212 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 213 | 214 | detect-indent@6.1.0: 215 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 216 | engines: {node: '>=8'} 217 | 218 | dir-glob@3.0.1: 219 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 220 | engines: {node: '>=8'} 221 | 222 | dunder-proto@1.0.1: 223 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 224 | engines: {node: '>= 0.4'} 225 | 226 | ee-first@1.1.1: 227 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 228 | 229 | encodeurl@2.0.0: 230 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 231 | engines: {node: '>= 0.8'} 232 | 233 | enquirer@2.4.1: 234 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 235 | engines: {node: '>=8.6'} 236 | 237 | es-define-property@1.0.1: 238 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 239 | engines: {node: '>= 0.4'} 240 | 241 | es-errors@1.3.0: 242 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 243 | engines: {node: '>= 0.4'} 244 | 245 | es-object-atoms@1.1.1: 246 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 247 | engines: {node: '>= 0.4'} 248 | 249 | escape-html@1.0.3: 250 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 251 | 252 | esprima@4.0.1: 253 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 254 | engines: {node: '>=4'} 255 | hasBin: true 256 | 257 | etag@1.8.1: 258 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 259 | engines: {node: '>= 0.6'} 260 | 261 | eventsource-parser@3.0.0: 262 | resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} 263 | engines: {node: '>=18.0.0'} 264 | 265 | eventsource@3.0.2: 266 | resolution: {integrity: sha512-YolzkJNxsTL3tCJMWFxpxtG2sCjbZ4LQUBUrkdaJK0ub0p6lmJt+2+1SwhKjLc652lpH9L/79Ptez972H9tphw==} 267 | engines: {node: '>=18.0.0'} 268 | 269 | express-rate-limit@7.5.0: 270 | resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} 271 | engines: {node: '>= 16'} 272 | peerDependencies: 273 | express: ^4.11 || 5 || ^5.0.0-beta.1 274 | 275 | express@5.0.1: 276 | resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==} 277 | engines: {node: '>= 18'} 278 | 279 | extendable-error@0.1.7: 280 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 281 | 282 | external-editor@3.1.0: 283 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 284 | engines: {node: '>=4'} 285 | 286 | fast-glob@3.3.3: 287 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 288 | engines: {node: '>=8.6.0'} 289 | 290 | fastq@1.19.0: 291 | resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} 292 | 293 | fill-range@7.1.1: 294 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 295 | engines: {node: '>=8'} 296 | 297 | finalhandler@2.1.0: 298 | resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} 299 | engines: {node: '>= 0.8'} 300 | 301 | find-up@4.1.0: 302 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 303 | engines: {node: '>=8'} 304 | 305 | forwarded@0.2.0: 306 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 307 | engines: {node: '>= 0.6'} 308 | 309 | fresh@0.5.2: 310 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 311 | engines: {node: '>= 0.6'} 312 | 313 | fresh@2.0.0: 314 | resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 315 | engines: {node: '>= 0.8'} 316 | 317 | fs-extra@7.0.1: 318 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 319 | engines: {node: '>=6 <7 || >=8'} 320 | 321 | fs-extra@8.1.0: 322 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 323 | engines: {node: '>=6 <7 || >=8'} 324 | 325 | function-bind@1.1.2: 326 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 327 | 328 | get-intrinsic@1.3.0: 329 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 330 | engines: {node: '>= 0.4'} 331 | 332 | get-proto@1.0.1: 333 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 334 | engines: {node: '>= 0.4'} 335 | 336 | glob-parent@5.1.2: 337 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 338 | engines: {node: '>= 6'} 339 | 340 | globby@11.1.0: 341 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 342 | engines: {node: '>=10'} 343 | 344 | gopd@1.2.0: 345 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 346 | engines: {node: '>= 0.4'} 347 | 348 | graceful-fs@4.2.11: 349 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 350 | 351 | has-symbols@1.1.0: 352 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 353 | engines: {node: '>= 0.4'} 354 | 355 | hasown@2.0.2: 356 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 357 | engines: {node: '>= 0.4'} 358 | 359 | http-errors@2.0.0: 360 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 361 | engines: {node: '>= 0.8'} 362 | 363 | human-id@4.1.1: 364 | resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} 365 | hasBin: true 366 | 367 | iconv-lite@0.4.24: 368 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 369 | engines: {node: '>=0.10.0'} 370 | 371 | iconv-lite@0.5.2: 372 | resolution: {integrity: sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==} 373 | engines: {node: '>=0.10.0'} 374 | 375 | iconv-lite@0.6.3: 376 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 377 | engines: {node: '>=0.10.0'} 378 | 379 | ignore@5.3.2: 380 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 381 | engines: {node: '>= 4'} 382 | 383 | inherits@2.0.4: 384 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 385 | 386 | ipaddr.js@1.9.1: 387 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 388 | engines: {node: '>= 0.10'} 389 | 390 | is-extglob@2.1.1: 391 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 392 | engines: {node: '>=0.10.0'} 393 | 394 | is-glob@4.0.3: 395 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 396 | engines: {node: '>=0.10.0'} 397 | 398 | is-number@7.0.0: 399 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 400 | engines: {node: '>=0.12.0'} 401 | 402 | is-promise@4.0.0: 403 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 404 | 405 | is-subdir@1.2.0: 406 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 407 | engines: {node: '>=4'} 408 | 409 | is-windows@1.0.2: 410 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 411 | engines: {node: '>=0.10.0'} 412 | 413 | isexe@2.0.0: 414 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 415 | 416 | js-yaml@3.14.1: 417 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 418 | hasBin: true 419 | 420 | jsonfile@4.0.0: 421 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 422 | 423 | locate-path@5.0.0: 424 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 425 | engines: {node: '>=8'} 426 | 427 | lodash.startcase@4.4.0: 428 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 429 | 430 | math-intrinsics@1.1.0: 431 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 432 | engines: {node: '>= 0.4'} 433 | 434 | media-typer@1.1.0: 435 | resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 436 | engines: {node: '>= 0.8'} 437 | 438 | merge-descriptors@2.0.0: 439 | resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} 440 | engines: {node: '>=18'} 441 | 442 | merge2@1.4.1: 443 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 444 | engines: {node: '>= 8'} 445 | 446 | methods@1.1.2: 447 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 448 | engines: {node: '>= 0.6'} 449 | 450 | micromatch@4.0.8: 451 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 452 | engines: {node: '>=8.6'} 453 | 454 | mime-db@1.52.0: 455 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 456 | engines: {node: '>= 0.6'} 457 | 458 | mime-db@1.53.0: 459 | resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} 460 | engines: {node: '>= 0.6'} 461 | 462 | mime-types@2.1.35: 463 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 464 | engines: {node: '>= 0.6'} 465 | 466 | mime-types@3.0.0: 467 | resolution: {integrity: sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==} 468 | engines: {node: '>= 0.6'} 469 | 470 | mri@1.2.0: 471 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 472 | engines: {node: '>=4'} 473 | 474 | ms@2.1.2: 475 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 476 | 477 | ms@2.1.3: 478 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 479 | 480 | negotiator@1.0.0: 481 | resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} 482 | engines: {node: '>= 0.6'} 483 | 484 | object-assign@4.1.1: 485 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 486 | engines: {node: '>=0.10.0'} 487 | 488 | object-inspect@1.13.4: 489 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 490 | engines: {node: '>= 0.4'} 491 | 492 | on-finished@2.4.1: 493 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 494 | engines: {node: '>= 0.8'} 495 | 496 | once@1.4.0: 497 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 498 | 499 | os-tmpdir@1.0.2: 500 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 501 | engines: {node: '>=0.10.0'} 502 | 503 | outdent@0.5.0: 504 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 505 | 506 | p-filter@2.1.0: 507 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 508 | engines: {node: '>=8'} 509 | 510 | p-limit@2.3.0: 511 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 512 | engines: {node: '>=6'} 513 | 514 | p-locate@4.1.0: 515 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 516 | engines: {node: '>=8'} 517 | 518 | p-map@2.1.0: 519 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 520 | engines: {node: '>=6'} 521 | 522 | p-try@2.2.0: 523 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 524 | engines: {node: '>=6'} 525 | 526 | package-manager-detector@0.2.9: 527 | resolution: {integrity: sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q==} 528 | 529 | parseurl@1.3.3: 530 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 531 | engines: {node: '>= 0.8'} 532 | 533 | path-exists@4.0.0: 534 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 535 | engines: {node: '>=8'} 536 | 537 | path-key@3.1.1: 538 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 539 | engines: {node: '>=8'} 540 | 541 | path-to-regexp@8.2.0: 542 | resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} 543 | engines: {node: '>=16'} 544 | 545 | path-type@4.0.0: 546 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 547 | engines: {node: '>=8'} 548 | 549 | picocolors@1.1.1: 550 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 551 | 552 | picomatch@2.3.1: 553 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 554 | engines: {node: '>=8.6'} 555 | 556 | pify@4.0.1: 557 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 558 | engines: {node: '>=6'} 559 | 560 | pkce-challenge@4.1.0: 561 | resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} 562 | engines: {node: '>=16.20.0'} 563 | 564 | prettier@2.8.8: 565 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 566 | engines: {node: '>=10.13.0'} 567 | hasBin: true 568 | 569 | proxy-addr@2.0.7: 570 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 571 | engines: {node: '>= 0.10'} 572 | 573 | qs@6.13.0: 574 | resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} 575 | engines: {node: '>=0.6'} 576 | 577 | qs@6.14.0: 578 | resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} 579 | engines: {node: '>=0.6'} 580 | 581 | queue-microtask@1.2.3: 582 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 583 | 584 | range-parser@1.2.1: 585 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 586 | engines: {node: '>= 0.6'} 587 | 588 | raw-body@3.0.0: 589 | resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} 590 | engines: {node: '>= 0.8'} 591 | 592 | read-yaml-file@1.1.0: 593 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 594 | engines: {node: '>=6'} 595 | 596 | regenerator-runtime@0.14.1: 597 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 598 | 599 | resolve-from@5.0.0: 600 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 601 | engines: {node: '>=8'} 602 | 603 | reusify@1.0.4: 604 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 605 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 606 | 607 | router@2.1.0: 608 | resolution: {integrity: sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==} 609 | engines: {node: '>= 18'} 610 | 611 | run-parallel@1.2.0: 612 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 613 | 614 | safe-buffer@5.2.1: 615 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 616 | 617 | safer-buffer@2.1.2: 618 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 619 | 620 | semver@7.7.1: 621 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 622 | engines: {node: '>=10'} 623 | hasBin: true 624 | 625 | send@1.1.0: 626 | resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} 627 | engines: {node: '>= 18'} 628 | 629 | serve-static@2.1.0: 630 | resolution: {integrity: sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==} 631 | engines: {node: '>= 18'} 632 | 633 | setprototypeof@1.2.0: 634 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 635 | 636 | shebang-command@2.0.0: 637 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 638 | engines: {node: '>=8'} 639 | 640 | shebang-regex@3.0.0: 641 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 642 | engines: {node: '>=8'} 643 | 644 | side-channel-list@1.0.0: 645 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 646 | engines: {node: '>= 0.4'} 647 | 648 | side-channel-map@1.0.1: 649 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 650 | engines: {node: '>= 0.4'} 651 | 652 | side-channel-weakmap@1.0.2: 653 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 654 | engines: {node: '>= 0.4'} 655 | 656 | side-channel@1.1.0: 657 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 658 | engines: {node: '>= 0.4'} 659 | 660 | signal-exit@4.1.0: 661 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 662 | engines: {node: '>=14'} 663 | 664 | slash@3.0.0: 665 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 666 | engines: {node: '>=8'} 667 | 668 | spawndamnit@3.0.1: 669 | resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} 670 | 671 | sprintf-js@1.0.3: 672 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 673 | 674 | statuses@2.0.1: 675 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 676 | engines: {node: '>= 0.8'} 677 | 678 | strip-ansi@6.0.1: 679 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 680 | engines: {node: '>=8'} 681 | 682 | strip-bom@3.0.0: 683 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 684 | engines: {node: '>=4'} 685 | 686 | term-size@2.2.1: 687 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 688 | engines: {node: '>=8'} 689 | 690 | tmp@0.0.33: 691 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 692 | engines: {node: '>=0.6.0'} 693 | 694 | to-regex-range@5.0.1: 695 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 696 | engines: {node: '>=8.0'} 697 | 698 | toidentifier@1.0.1: 699 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 700 | engines: {node: '>=0.6'} 701 | 702 | type-is@2.0.0: 703 | resolution: {integrity: sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==} 704 | engines: {node: '>= 0.6'} 705 | 706 | typescript@5.8.3: 707 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 708 | engines: {node: '>=14.17'} 709 | hasBin: true 710 | 711 | undici-types@6.21.0: 712 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 713 | 714 | universalify@0.1.2: 715 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 716 | engines: {node: '>= 4.0.0'} 717 | 718 | unpipe@1.0.0: 719 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 720 | engines: {node: '>= 0.8'} 721 | 722 | utils-merge@1.0.1: 723 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 724 | engines: {node: '>= 0.4.0'} 725 | 726 | vary@1.1.2: 727 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 728 | engines: {node: '>= 0.8'} 729 | 730 | which@2.0.2: 731 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 732 | engines: {node: '>= 8'} 733 | hasBin: true 734 | 735 | wrappy@1.0.2: 736 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 737 | 738 | zod-to-json-schema@3.24.1: 739 | resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} 740 | peerDependencies: 741 | zod: ^3.24.1 742 | 743 | zod@3.24.1: 744 | resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} 745 | 746 | snapshots: 747 | 748 | '@babel/runtime@7.26.9': 749 | dependencies: 750 | regenerator-runtime: 0.14.1 751 | 752 | '@changesets/apply-release-plan@7.0.10': 753 | dependencies: 754 | '@changesets/config': 3.1.1 755 | '@changesets/get-version-range-type': 0.4.0 756 | '@changesets/git': 3.0.2 757 | '@changesets/should-skip-package': 0.1.2 758 | '@changesets/types': 6.1.0 759 | '@manypkg/get-packages': 1.1.3 760 | detect-indent: 6.1.0 761 | fs-extra: 7.0.1 762 | lodash.startcase: 4.4.0 763 | outdent: 0.5.0 764 | prettier: 2.8.8 765 | resolve-from: 5.0.0 766 | semver: 7.7.1 767 | 768 | '@changesets/assemble-release-plan@6.0.6': 769 | dependencies: 770 | '@changesets/errors': 0.2.0 771 | '@changesets/get-dependents-graph': 2.1.3 772 | '@changesets/should-skip-package': 0.1.2 773 | '@changesets/types': 6.1.0 774 | '@manypkg/get-packages': 1.1.3 775 | semver: 7.7.1 776 | 777 | '@changesets/changelog-git@0.2.1': 778 | dependencies: 779 | '@changesets/types': 6.1.0 780 | 781 | '@changesets/cli@2.28.1': 782 | dependencies: 783 | '@changesets/apply-release-plan': 7.0.10 784 | '@changesets/assemble-release-plan': 6.0.6 785 | '@changesets/changelog-git': 0.2.1 786 | '@changesets/config': 3.1.1 787 | '@changesets/errors': 0.2.0 788 | '@changesets/get-dependents-graph': 2.1.3 789 | '@changesets/get-release-plan': 4.0.8 790 | '@changesets/git': 3.0.2 791 | '@changesets/logger': 0.1.1 792 | '@changesets/pre': 2.0.2 793 | '@changesets/read': 0.6.3 794 | '@changesets/should-skip-package': 0.1.2 795 | '@changesets/types': 6.1.0 796 | '@changesets/write': 0.4.0 797 | '@manypkg/get-packages': 1.1.3 798 | ansi-colors: 4.1.3 799 | ci-info: 3.9.0 800 | enquirer: 2.4.1 801 | external-editor: 3.1.0 802 | fs-extra: 7.0.1 803 | mri: 1.2.0 804 | p-limit: 2.3.0 805 | package-manager-detector: 0.2.9 806 | picocolors: 1.1.1 807 | resolve-from: 5.0.0 808 | semver: 7.7.1 809 | spawndamnit: 3.0.1 810 | term-size: 2.2.1 811 | 812 | '@changesets/config@3.1.1': 813 | dependencies: 814 | '@changesets/errors': 0.2.0 815 | '@changesets/get-dependents-graph': 2.1.3 816 | '@changesets/logger': 0.1.1 817 | '@changesets/types': 6.1.0 818 | '@manypkg/get-packages': 1.1.3 819 | fs-extra: 7.0.1 820 | micromatch: 4.0.8 821 | 822 | '@changesets/errors@0.2.0': 823 | dependencies: 824 | extendable-error: 0.1.7 825 | 826 | '@changesets/get-dependents-graph@2.1.3': 827 | dependencies: 828 | '@changesets/types': 6.1.0 829 | '@manypkg/get-packages': 1.1.3 830 | picocolors: 1.1.1 831 | semver: 7.7.1 832 | 833 | '@changesets/get-release-plan@4.0.8': 834 | dependencies: 835 | '@changesets/assemble-release-plan': 6.0.6 836 | '@changesets/config': 3.1.1 837 | '@changesets/pre': 2.0.2 838 | '@changesets/read': 0.6.3 839 | '@changesets/types': 6.1.0 840 | '@manypkg/get-packages': 1.1.3 841 | 842 | '@changesets/get-version-range-type@0.4.0': {} 843 | 844 | '@changesets/git@3.0.2': 845 | dependencies: 846 | '@changesets/errors': 0.2.0 847 | '@manypkg/get-packages': 1.1.3 848 | is-subdir: 1.2.0 849 | micromatch: 4.0.8 850 | spawndamnit: 3.0.1 851 | 852 | '@changesets/logger@0.1.1': 853 | dependencies: 854 | picocolors: 1.1.1 855 | 856 | '@changesets/parse@0.4.1': 857 | dependencies: 858 | '@changesets/types': 6.1.0 859 | js-yaml: 3.14.1 860 | 861 | '@changesets/pre@2.0.2': 862 | dependencies: 863 | '@changesets/errors': 0.2.0 864 | '@changesets/types': 6.1.0 865 | '@manypkg/get-packages': 1.1.3 866 | fs-extra: 7.0.1 867 | 868 | '@changesets/read@0.6.3': 869 | dependencies: 870 | '@changesets/git': 3.0.2 871 | '@changesets/logger': 0.1.1 872 | '@changesets/parse': 0.4.1 873 | '@changesets/types': 6.1.0 874 | fs-extra: 7.0.1 875 | p-filter: 2.1.0 876 | picocolors: 1.1.1 877 | 878 | '@changesets/should-skip-package@0.1.2': 879 | dependencies: 880 | '@changesets/types': 6.1.0 881 | '@manypkg/get-packages': 1.1.3 882 | 883 | '@changesets/types@4.1.0': {} 884 | 885 | '@changesets/types@6.1.0': {} 886 | 887 | '@changesets/write@0.4.0': 888 | dependencies: 889 | '@changesets/types': 6.1.0 890 | fs-extra: 7.0.1 891 | human-id: 4.1.1 892 | prettier: 2.8.8 893 | 894 | '@manypkg/find-root@1.1.0': 895 | dependencies: 896 | '@babel/runtime': 7.26.9 897 | '@types/node': 12.20.55 898 | find-up: 4.1.0 899 | fs-extra: 8.1.0 900 | 901 | '@manypkg/get-packages@1.1.3': 902 | dependencies: 903 | '@babel/runtime': 7.26.9 904 | '@changesets/types': 4.1.0 905 | '@manypkg/find-root': 1.1.0 906 | fs-extra: 8.1.0 907 | globby: 11.1.0 908 | read-yaml-file: 1.1.0 909 | 910 | '@modelcontextprotocol/sdk@1.8.0': 911 | dependencies: 912 | content-type: 1.0.5 913 | cors: 2.8.5 914 | cross-spawn: 7.0.6 915 | eventsource: 3.0.2 916 | express: 5.0.1 917 | express-rate-limit: 7.5.0(express@5.0.1) 918 | pkce-challenge: 4.1.0 919 | raw-body: 3.0.0 920 | zod: 3.24.1 921 | zod-to-json-schema: 3.24.1(zod@3.24.1) 922 | transitivePeerDependencies: 923 | - supports-color 924 | 925 | '@nodelib/fs.scandir@2.1.5': 926 | dependencies: 927 | '@nodelib/fs.stat': 2.0.5 928 | run-parallel: 1.2.0 929 | 930 | '@nodelib/fs.stat@2.0.5': {} 931 | 932 | '@nodelib/fs.walk@1.2.8': 933 | dependencies: 934 | '@nodelib/fs.scandir': 2.1.5 935 | fastq: 1.19.0 936 | 937 | '@types/node@12.20.55': {} 938 | 939 | '@types/node@22.14.0': 940 | dependencies: 941 | undici-types: 6.21.0 942 | 943 | accepts@2.0.0: 944 | dependencies: 945 | mime-types: 3.0.0 946 | negotiator: 1.0.0 947 | 948 | ansi-colors@4.1.3: {} 949 | 950 | ansi-regex@5.0.1: {} 951 | 952 | argparse@1.0.10: 953 | dependencies: 954 | sprintf-js: 1.0.3 955 | 956 | array-union@2.1.0: {} 957 | 958 | better-path-resolve@1.0.0: 959 | dependencies: 960 | is-windows: 1.0.2 961 | 962 | body-parser@2.1.0: 963 | dependencies: 964 | bytes: 3.1.2 965 | content-type: 1.0.5 966 | debug: 4.4.0 967 | http-errors: 2.0.0 968 | iconv-lite: 0.5.2 969 | on-finished: 2.4.1 970 | qs: 6.14.0 971 | raw-body: 3.0.0 972 | type-is: 2.0.0 973 | transitivePeerDependencies: 974 | - supports-color 975 | 976 | braces@3.0.3: 977 | dependencies: 978 | fill-range: 7.1.1 979 | 980 | bytes@3.1.2: {} 981 | 982 | call-bind-apply-helpers@1.0.2: 983 | dependencies: 984 | es-errors: 1.3.0 985 | function-bind: 1.1.2 986 | 987 | call-bound@1.0.4: 988 | dependencies: 989 | call-bind-apply-helpers: 1.0.2 990 | get-intrinsic: 1.3.0 991 | 992 | chardet@0.7.0: {} 993 | 994 | ci-info@3.9.0: {} 995 | 996 | content-disposition@1.0.0: 997 | dependencies: 998 | safe-buffer: 5.2.1 999 | 1000 | content-type@1.0.5: {} 1001 | 1002 | cookie-signature@1.2.2: {} 1003 | 1004 | cookie@0.7.1: {} 1005 | 1006 | cors@2.8.5: 1007 | dependencies: 1008 | object-assign: 4.1.1 1009 | vary: 1.1.2 1010 | 1011 | cross-spawn@7.0.6: 1012 | dependencies: 1013 | path-key: 3.1.1 1014 | shebang-command: 2.0.0 1015 | which: 2.0.2 1016 | 1017 | debug@4.3.6: 1018 | dependencies: 1019 | ms: 2.1.2 1020 | 1021 | debug@4.4.0: 1022 | dependencies: 1023 | ms: 2.1.3 1024 | 1025 | depd@2.0.0: {} 1026 | 1027 | destroy@1.2.0: {} 1028 | 1029 | detect-indent@6.1.0: {} 1030 | 1031 | dir-glob@3.0.1: 1032 | dependencies: 1033 | path-type: 4.0.0 1034 | 1035 | dunder-proto@1.0.1: 1036 | dependencies: 1037 | call-bind-apply-helpers: 1.0.2 1038 | es-errors: 1.3.0 1039 | gopd: 1.2.0 1040 | 1041 | ee-first@1.1.1: {} 1042 | 1043 | encodeurl@2.0.0: {} 1044 | 1045 | enquirer@2.4.1: 1046 | dependencies: 1047 | ansi-colors: 4.1.3 1048 | strip-ansi: 6.0.1 1049 | 1050 | es-define-property@1.0.1: {} 1051 | 1052 | es-errors@1.3.0: {} 1053 | 1054 | es-object-atoms@1.1.1: 1055 | dependencies: 1056 | es-errors: 1.3.0 1057 | 1058 | escape-html@1.0.3: {} 1059 | 1060 | esprima@4.0.1: {} 1061 | 1062 | etag@1.8.1: {} 1063 | 1064 | eventsource-parser@3.0.0: {} 1065 | 1066 | eventsource@3.0.2: 1067 | dependencies: 1068 | eventsource-parser: 3.0.0 1069 | 1070 | express-rate-limit@7.5.0(express@5.0.1): 1071 | dependencies: 1072 | express: 5.0.1 1073 | 1074 | express@5.0.1: 1075 | dependencies: 1076 | accepts: 2.0.0 1077 | body-parser: 2.1.0 1078 | content-disposition: 1.0.0 1079 | content-type: 1.0.5 1080 | cookie: 0.7.1 1081 | cookie-signature: 1.2.2 1082 | debug: 4.3.6 1083 | depd: 2.0.0 1084 | encodeurl: 2.0.0 1085 | escape-html: 1.0.3 1086 | etag: 1.8.1 1087 | finalhandler: 2.1.0 1088 | fresh: 2.0.0 1089 | http-errors: 2.0.0 1090 | merge-descriptors: 2.0.0 1091 | methods: 1.1.2 1092 | mime-types: 3.0.0 1093 | on-finished: 2.4.1 1094 | once: 1.4.0 1095 | parseurl: 1.3.3 1096 | proxy-addr: 2.0.7 1097 | qs: 6.13.0 1098 | range-parser: 1.2.1 1099 | router: 2.1.0 1100 | safe-buffer: 5.2.1 1101 | send: 1.1.0 1102 | serve-static: 2.1.0 1103 | setprototypeof: 1.2.0 1104 | statuses: 2.0.1 1105 | type-is: 2.0.0 1106 | utils-merge: 1.0.1 1107 | vary: 1.1.2 1108 | transitivePeerDependencies: 1109 | - supports-color 1110 | 1111 | extendable-error@0.1.7: {} 1112 | 1113 | external-editor@3.1.0: 1114 | dependencies: 1115 | chardet: 0.7.0 1116 | iconv-lite: 0.4.24 1117 | tmp: 0.0.33 1118 | 1119 | fast-glob@3.3.3: 1120 | dependencies: 1121 | '@nodelib/fs.stat': 2.0.5 1122 | '@nodelib/fs.walk': 1.2.8 1123 | glob-parent: 5.1.2 1124 | merge2: 1.4.1 1125 | micromatch: 4.0.8 1126 | 1127 | fastq@1.19.0: 1128 | dependencies: 1129 | reusify: 1.0.4 1130 | 1131 | fill-range@7.1.1: 1132 | dependencies: 1133 | to-regex-range: 5.0.1 1134 | 1135 | finalhandler@2.1.0: 1136 | dependencies: 1137 | debug: 4.4.0 1138 | encodeurl: 2.0.0 1139 | escape-html: 1.0.3 1140 | on-finished: 2.4.1 1141 | parseurl: 1.3.3 1142 | statuses: 2.0.1 1143 | transitivePeerDependencies: 1144 | - supports-color 1145 | 1146 | find-up@4.1.0: 1147 | dependencies: 1148 | locate-path: 5.0.0 1149 | path-exists: 4.0.0 1150 | 1151 | forwarded@0.2.0: {} 1152 | 1153 | fresh@0.5.2: {} 1154 | 1155 | fresh@2.0.0: {} 1156 | 1157 | fs-extra@7.0.1: 1158 | dependencies: 1159 | graceful-fs: 4.2.11 1160 | jsonfile: 4.0.0 1161 | universalify: 0.1.2 1162 | 1163 | fs-extra@8.1.0: 1164 | dependencies: 1165 | graceful-fs: 4.2.11 1166 | jsonfile: 4.0.0 1167 | universalify: 0.1.2 1168 | 1169 | function-bind@1.1.2: {} 1170 | 1171 | get-intrinsic@1.3.0: 1172 | dependencies: 1173 | call-bind-apply-helpers: 1.0.2 1174 | es-define-property: 1.0.1 1175 | es-errors: 1.3.0 1176 | es-object-atoms: 1.1.1 1177 | function-bind: 1.1.2 1178 | get-proto: 1.0.1 1179 | gopd: 1.2.0 1180 | has-symbols: 1.1.0 1181 | hasown: 2.0.2 1182 | math-intrinsics: 1.1.0 1183 | 1184 | get-proto@1.0.1: 1185 | dependencies: 1186 | dunder-proto: 1.0.1 1187 | es-object-atoms: 1.1.1 1188 | 1189 | glob-parent@5.1.2: 1190 | dependencies: 1191 | is-glob: 4.0.3 1192 | 1193 | globby@11.1.0: 1194 | dependencies: 1195 | array-union: 2.1.0 1196 | dir-glob: 3.0.1 1197 | fast-glob: 3.3.3 1198 | ignore: 5.3.2 1199 | merge2: 1.4.1 1200 | slash: 3.0.0 1201 | 1202 | gopd@1.2.0: {} 1203 | 1204 | graceful-fs@4.2.11: {} 1205 | 1206 | has-symbols@1.1.0: {} 1207 | 1208 | hasown@2.0.2: 1209 | dependencies: 1210 | function-bind: 1.1.2 1211 | 1212 | http-errors@2.0.0: 1213 | dependencies: 1214 | depd: 2.0.0 1215 | inherits: 2.0.4 1216 | setprototypeof: 1.2.0 1217 | statuses: 2.0.1 1218 | toidentifier: 1.0.1 1219 | 1220 | human-id@4.1.1: {} 1221 | 1222 | iconv-lite@0.4.24: 1223 | dependencies: 1224 | safer-buffer: 2.1.2 1225 | 1226 | iconv-lite@0.5.2: 1227 | dependencies: 1228 | safer-buffer: 2.1.2 1229 | 1230 | iconv-lite@0.6.3: 1231 | dependencies: 1232 | safer-buffer: 2.1.2 1233 | 1234 | ignore@5.3.2: {} 1235 | 1236 | inherits@2.0.4: {} 1237 | 1238 | ipaddr.js@1.9.1: {} 1239 | 1240 | is-extglob@2.1.1: {} 1241 | 1242 | is-glob@4.0.3: 1243 | dependencies: 1244 | is-extglob: 2.1.1 1245 | 1246 | is-number@7.0.0: {} 1247 | 1248 | is-promise@4.0.0: {} 1249 | 1250 | is-subdir@1.2.0: 1251 | dependencies: 1252 | better-path-resolve: 1.0.0 1253 | 1254 | is-windows@1.0.2: {} 1255 | 1256 | isexe@2.0.0: {} 1257 | 1258 | js-yaml@3.14.1: 1259 | dependencies: 1260 | argparse: 1.0.10 1261 | esprima: 4.0.1 1262 | 1263 | jsonfile@4.0.0: 1264 | optionalDependencies: 1265 | graceful-fs: 4.2.11 1266 | 1267 | locate-path@5.0.0: 1268 | dependencies: 1269 | p-locate: 4.1.0 1270 | 1271 | lodash.startcase@4.4.0: {} 1272 | 1273 | math-intrinsics@1.1.0: {} 1274 | 1275 | media-typer@1.1.0: {} 1276 | 1277 | merge-descriptors@2.0.0: {} 1278 | 1279 | merge2@1.4.1: {} 1280 | 1281 | methods@1.1.2: {} 1282 | 1283 | micromatch@4.0.8: 1284 | dependencies: 1285 | braces: 3.0.3 1286 | picomatch: 2.3.1 1287 | 1288 | mime-db@1.52.0: {} 1289 | 1290 | mime-db@1.53.0: {} 1291 | 1292 | mime-types@2.1.35: 1293 | dependencies: 1294 | mime-db: 1.52.0 1295 | 1296 | mime-types@3.0.0: 1297 | dependencies: 1298 | mime-db: 1.53.0 1299 | 1300 | mri@1.2.0: {} 1301 | 1302 | ms@2.1.2: {} 1303 | 1304 | ms@2.1.3: {} 1305 | 1306 | negotiator@1.0.0: {} 1307 | 1308 | object-assign@4.1.1: {} 1309 | 1310 | object-inspect@1.13.4: {} 1311 | 1312 | on-finished@2.4.1: 1313 | dependencies: 1314 | ee-first: 1.1.1 1315 | 1316 | once@1.4.0: 1317 | dependencies: 1318 | wrappy: 1.0.2 1319 | 1320 | os-tmpdir@1.0.2: {} 1321 | 1322 | outdent@0.5.0: {} 1323 | 1324 | p-filter@2.1.0: 1325 | dependencies: 1326 | p-map: 2.1.0 1327 | 1328 | p-limit@2.3.0: 1329 | dependencies: 1330 | p-try: 2.2.0 1331 | 1332 | p-locate@4.1.0: 1333 | dependencies: 1334 | p-limit: 2.3.0 1335 | 1336 | p-map@2.1.0: {} 1337 | 1338 | p-try@2.2.0: {} 1339 | 1340 | package-manager-detector@0.2.9: {} 1341 | 1342 | parseurl@1.3.3: {} 1343 | 1344 | path-exists@4.0.0: {} 1345 | 1346 | path-key@3.1.1: {} 1347 | 1348 | path-to-regexp@8.2.0: {} 1349 | 1350 | path-type@4.0.0: {} 1351 | 1352 | picocolors@1.1.1: {} 1353 | 1354 | picomatch@2.3.1: {} 1355 | 1356 | pify@4.0.1: {} 1357 | 1358 | pkce-challenge@4.1.0: {} 1359 | 1360 | prettier@2.8.8: {} 1361 | 1362 | proxy-addr@2.0.7: 1363 | dependencies: 1364 | forwarded: 0.2.0 1365 | ipaddr.js: 1.9.1 1366 | 1367 | qs@6.13.0: 1368 | dependencies: 1369 | side-channel: 1.1.0 1370 | 1371 | qs@6.14.0: 1372 | dependencies: 1373 | side-channel: 1.1.0 1374 | 1375 | queue-microtask@1.2.3: {} 1376 | 1377 | range-parser@1.2.1: {} 1378 | 1379 | raw-body@3.0.0: 1380 | dependencies: 1381 | bytes: 3.1.2 1382 | http-errors: 2.0.0 1383 | iconv-lite: 0.6.3 1384 | unpipe: 1.0.0 1385 | 1386 | read-yaml-file@1.1.0: 1387 | dependencies: 1388 | graceful-fs: 4.2.11 1389 | js-yaml: 3.14.1 1390 | pify: 4.0.1 1391 | strip-bom: 3.0.0 1392 | 1393 | regenerator-runtime@0.14.1: {} 1394 | 1395 | resolve-from@5.0.0: {} 1396 | 1397 | reusify@1.0.4: {} 1398 | 1399 | router@2.1.0: 1400 | dependencies: 1401 | is-promise: 4.0.0 1402 | parseurl: 1.3.3 1403 | path-to-regexp: 8.2.0 1404 | 1405 | run-parallel@1.2.0: 1406 | dependencies: 1407 | queue-microtask: 1.2.3 1408 | 1409 | safe-buffer@5.2.1: {} 1410 | 1411 | safer-buffer@2.1.2: {} 1412 | 1413 | semver@7.7.1: {} 1414 | 1415 | send@1.1.0: 1416 | dependencies: 1417 | debug: 4.4.0 1418 | destroy: 1.2.0 1419 | encodeurl: 2.0.0 1420 | escape-html: 1.0.3 1421 | etag: 1.8.1 1422 | fresh: 0.5.2 1423 | http-errors: 2.0.0 1424 | mime-types: 2.1.35 1425 | ms: 2.1.3 1426 | on-finished: 2.4.1 1427 | range-parser: 1.2.1 1428 | statuses: 2.0.1 1429 | transitivePeerDependencies: 1430 | - supports-color 1431 | 1432 | serve-static@2.1.0: 1433 | dependencies: 1434 | encodeurl: 2.0.0 1435 | escape-html: 1.0.3 1436 | parseurl: 1.3.3 1437 | send: 1.1.0 1438 | transitivePeerDependencies: 1439 | - supports-color 1440 | 1441 | setprototypeof@1.2.0: {} 1442 | 1443 | shebang-command@2.0.0: 1444 | dependencies: 1445 | shebang-regex: 3.0.0 1446 | 1447 | shebang-regex@3.0.0: {} 1448 | 1449 | side-channel-list@1.0.0: 1450 | dependencies: 1451 | es-errors: 1.3.0 1452 | object-inspect: 1.13.4 1453 | 1454 | side-channel-map@1.0.1: 1455 | dependencies: 1456 | call-bound: 1.0.4 1457 | es-errors: 1.3.0 1458 | get-intrinsic: 1.3.0 1459 | object-inspect: 1.13.4 1460 | 1461 | side-channel-weakmap@1.0.2: 1462 | dependencies: 1463 | call-bound: 1.0.4 1464 | es-errors: 1.3.0 1465 | get-intrinsic: 1.3.0 1466 | object-inspect: 1.13.4 1467 | side-channel-map: 1.0.1 1468 | 1469 | side-channel@1.1.0: 1470 | dependencies: 1471 | es-errors: 1.3.0 1472 | object-inspect: 1.13.4 1473 | side-channel-list: 1.0.0 1474 | side-channel-map: 1.0.1 1475 | side-channel-weakmap: 1.0.2 1476 | 1477 | signal-exit@4.1.0: {} 1478 | 1479 | slash@3.0.0: {} 1480 | 1481 | spawndamnit@3.0.1: 1482 | dependencies: 1483 | cross-spawn: 7.0.6 1484 | signal-exit: 4.1.0 1485 | 1486 | sprintf-js@1.0.3: {} 1487 | 1488 | statuses@2.0.1: {} 1489 | 1490 | strip-ansi@6.0.1: 1491 | dependencies: 1492 | ansi-regex: 5.0.1 1493 | 1494 | strip-bom@3.0.0: {} 1495 | 1496 | term-size@2.2.1: {} 1497 | 1498 | tmp@0.0.33: 1499 | dependencies: 1500 | os-tmpdir: 1.0.2 1501 | 1502 | to-regex-range@5.0.1: 1503 | dependencies: 1504 | is-number: 7.0.0 1505 | 1506 | toidentifier@1.0.1: {} 1507 | 1508 | type-is@2.0.0: 1509 | dependencies: 1510 | content-type: 1.0.5 1511 | media-typer: 1.1.0 1512 | mime-types: 3.0.0 1513 | 1514 | typescript@5.8.3: {} 1515 | 1516 | undici-types@6.21.0: {} 1517 | 1518 | universalify@0.1.2: {} 1519 | 1520 | unpipe@1.0.0: {} 1521 | 1522 | utils-merge@1.0.1: {} 1523 | 1524 | vary@1.1.2: {} 1525 | 1526 | which@2.0.2: 1527 | dependencies: 1528 | isexe: 2.0.0 1529 | 1530 | wrappy@1.0.2: {} 1531 | 1532 | zod-to-json-schema@3.24.1(zod@3.24.1): 1533 | dependencies: 1534 | zod: 3.24.1 1535 | 1536 | zod@3.24.1: {} 1537 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { Server } from '@modelcontextprotocol/sdk/server/index.js'; 4 | import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; 5 | import { 6 | CallToolRequestSchema, 7 | ErrorCode, 8 | ListToolsRequestSchema, 9 | McpError, 10 | } from '@modelcontextprotocol/sdk/types.js'; 11 | import { readFileSync } from 'fs'; 12 | import { dirname, join } from 'path'; 13 | import { fileURLToPath } from 'url'; 14 | 15 | const __filename = fileURLToPath(import.meta.url); 16 | const __dirname = dirname(__filename); 17 | const pkg = JSON.parse( 18 | readFileSync(join(__dirname, '..', 'package.json'), 'utf8'), 19 | ); 20 | const { name, version } = pkg; 21 | 22 | const JINAAI_API_KEY = process.env.JINAAI_API_KEY; 23 | if (!JINAAI_API_KEY) { 24 | throw new Error('JINAAI_API_KEY environment variable is required'); 25 | } 26 | 27 | const is_valid_url = (url: string): boolean => { 28 | try { 29 | new URL(url); 30 | return true; 31 | } catch { 32 | return false; 33 | } 34 | }; 35 | 36 | class JinaReaderServer { 37 | private server: Server; 38 | private base_url = 'https://r.jina.ai/'; 39 | 40 | constructor() { 41 | this.server = new Server( 42 | { 43 | name, 44 | version, 45 | }, 46 | { 47 | capabilities: { 48 | tools: {}, 49 | }, 50 | }, 51 | ); 52 | 53 | this.setup_handlers(); 54 | 55 | this.server.onerror = (error) => 56 | console.error('[MCP Error]', error); 57 | } 58 | 59 | private setup_handlers() { 60 | this.server.setRequestHandler( 61 | ListToolsRequestSchema, 62 | async () => ({ 63 | tools: [ 64 | { 65 | name: 'read_url', 66 | description: 67 | 'Convert any URL to LLM-friendly text using Jina.ai Reader', 68 | inputSchema: { 69 | type: 'object', 70 | properties: { 71 | url: { 72 | type: 'string', 73 | description: 'URL to process', 74 | }, 75 | no_cache: { 76 | type: 'boolean', 77 | description: 'Bypass cache for fresh results', 78 | default: false, 79 | }, 80 | format: { 81 | type: 'string', 82 | description: 'Response format (json or stream)', 83 | enum: ['json', 'stream'], 84 | default: 'json', 85 | }, 86 | timeout: { 87 | type: 'number', 88 | description: 89 | 'Maximum time in seconds to wait for webpage load', 90 | }, 91 | target_selector: { 92 | type: 'string', 93 | description: 94 | 'CSS selector to focus on specific elements', 95 | }, 96 | wait_for_selector: { 97 | type: 'string', 98 | description: 99 | 'CSS selector to wait for specific elements', 100 | }, 101 | remove_selector: { 102 | type: 'string', 103 | description: 104 | 'CSS selector to exclude specific elements', 105 | }, 106 | with_links_summary: { 107 | type: 'boolean', 108 | description: 109 | 'Gather all links at the end of response', 110 | }, 111 | with_images_summary: { 112 | type: 'boolean', 113 | description: 114 | 'Gather all images at the end of response', 115 | }, 116 | with_generated_alt: { 117 | type: 'boolean', 118 | description: 119 | 'Add alt text to images lacking captions', 120 | }, 121 | with_iframe: { 122 | type: 'boolean', 123 | description: 'Include iframe content in response', 124 | }, 125 | }, 126 | required: ['url'], 127 | }, 128 | }, 129 | ], 130 | }), 131 | ); 132 | 133 | this.server.setRequestHandler( 134 | CallToolRequestSchema, 135 | async (request) => { 136 | if (request.params.name !== 'read_url') { 137 | throw new McpError( 138 | ErrorCode.MethodNotFound, 139 | `Unknown tool: ${request.params.name}`, 140 | ); 141 | } 142 | 143 | const args = request.params.arguments as Record< 144 | string, 145 | unknown 146 | >; 147 | 148 | if ( 149 | !args || 150 | typeof args.url !== 'string' || 151 | !is_valid_url(args.url) 152 | ) { 153 | throw new McpError( 154 | ErrorCode.InvalidParams, 155 | 'Invalid or missing URL parameter', 156 | ); 157 | } 158 | 159 | try { 160 | const headers: Record = { 161 | Accept: 162 | typeof args.format === 'string' && 163 | args.format === 'stream' 164 | ? 'text/event-stream' 165 | : 'application/json', 166 | 'Content-Type': 'application/json', 167 | Authorization: `Bearer ${JINAAI_API_KEY}`, 168 | }; 169 | 170 | // Optional headers from documentation 171 | if (typeof args.no_cache === 'boolean' && args.no_cache) { 172 | headers['X-No-Cache'] = 'true'; 173 | } 174 | if (typeof args.timeout === 'number') { 175 | headers['X-Timeout'] = args.timeout.toString(); 176 | } 177 | if (typeof args.target_selector === 'string') { 178 | headers['X-Target-Selector'] = args.target_selector; 179 | } 180 | if (typeof args.wait_for_selector === 'string') { 181 | headers['X-Wait-For-Selector'] = args.wait_for_selector; 182 | } 183 | if (typeof args.remove_selector === 'string') { 184 | headers['X-Remove-Selector'] = args.remove_selector; 185 | } 186 | if ( 187 | typeof args.with_links_summary === 'boolean' && 188 | args.with_links_summary 189 | ) { 190 | headers['X-With-Links-Summary'] = 'true'; 191 | } 192 | if ( 193 | typeof args.with_images_summary === 'boolean' && 194 | args.with_images_summary 195 | ) { 196 | headers['X-With-Images-Summary'] = 'true'; 197 | } 198 | if ( 199 | typeof args.with_generated_alt === 'boolean' && 200 | args.with_generated_alt 201 | ) { 202 | headers['X-With-Generated-Alt'] = 'true'; 203 | } 204 | if ( 205 | typeof args.with_iframe === 'boolean' && 206 | args.with_iframe 207 | ) { 208 | headers['X-With-Iframe'] = 'true'; 209 | } 210 | 211 | const response = await fetch(this.base_url + args.url, { 212 | headers, 213 | }); 214 | 215 | if (!response.ok) { 216 | throw new Error(`HTTP error! status: ${response.status}`); 217 | } 218 | 219 | const result = await response.text(); 220 | 221 | return { 222 | content: [ 223 | { 224 | type: 'text', 225 | text: result, 226 | }, 227 | ], 228 | }; 229 | } catch (error) { 230 | const message = 231 | error instanceof Error ? error.message : String(error); 232 | throw new McpError( 233 | ErrorCode.InternalError, 234 | `Failed to process URL: ${message}`, 235 | ); 236 | } 237 | }, 238 | ); 239 | } 240 | 241 | async run() { 242 | const transport = new StdioServerTransport(); 243 | await this.server.connect(transport); 244 | console.error('Jina Reader MCP server running on stdio'); 245 | } 246 | } 247 | 248 | const server = new JinaReaderServer(); 249 | server.run().catch(console.error); 250 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ES2020", 5 | "moduleResolution": "node", 6 | "esModuleInterop": true, 7 | "strict": true, 8 | "outDir": "dist", 9 | "rootDir": "src", 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "resolveJsonModule": true 13 | }, 14 | "include": ["src/**/*"], 15 | "exclude": ["node_modules", "dist"] 16 | } 17 | --------------------------------------------------------------------------------