├── .changeset ├── README.md └── config.json ├── .github └── workflows │ └── publish.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── package.json ├── pnpm-lock.yaml ├── renovate.json ├── src ├── db │ ├── client.ts │ ├── config.ts │ └── migrations │ │ ├── run.ts │ │ └── schema.ts ├── index.ts └── types │ └── 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 | } 12 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish 2 | on: 3 | push: 4 | branches: 5 | - main 6 | 7 | concurrency: ${{ github.workflow }}-${{ github.ref }} 8 | 9 | jobs: 10 | publish: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | 15 | - uses: pnpm/action-setup@v2 16 | with: 17 | version: 9 18 | 19 | - uses: actions/setup-node@v4 20 | with: 21 | node-version: 20 22 | cache: 'pnpm' 23 | 24 | - run: pnpm install 25 | 26 | - name: Create Release Pull Request or Publish 27 | id: changesets 28 | uses: changesets/action@v1 29 | with: 30 | publish: pnpm run release 31 | env: 32 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 33 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 34 | -------------------------------------------------------------------------------- /.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-memory-libsql 2 | 3 | ## 0.0.14 4 | 5 | ### Patch Changes 6 | 7 | - 1e6b152: Refactor DatabaseManager for improved transaction handling 8 | and batch operations 9 | 10 | ## 0.0.13 11 | 12 | ### Patch Changes 13 | 14 | - c48fb84: feat: Enhance entity processing in DatabaseManager 15 | 16 | ## 0.0.12 17 | 18 | ### Patch Changes 19 | 20 | - feat: Implement delete_entity and delete_relation functionalities 21 | 22 | ## 0.0.11 23 | 24 | ### Patch Changes 25 | 26 | - 82289b4: feat: Enhance DatabaseManager with improved validation and 27 | error handling 28 | 29 | ## 0.0.10 30 | 31 | ### Patch Changes 32 | 33 | - 33d8232: update server info 34 | 35 | ## 0.0.9 36 | 37 | ### Patch Changes 38 | 39 | - 7652e39: - update server config 40 | - snek case 41 | - formatting 42 | 43 | ## 0.0.8 44 | 45 | ### Patch Changes 46 | 47 | - db5b2e8: tags 48 | 49 | ## 0.0.7 50 | 51 | ### Patch Changes 52 | 53 | - readme again! 54 | 55 | ## 0.0.6 56 | 57 | ### Patch Changes 58 | 59 | - readme update manual publish 60 | 61 | ## 0.0.5 62 | 63 | ### Patch Changes 64 | 65 | - 117063f: update readme 66 | 67 | ## 0.0.4 68 | 69 | ### Patch Changes 70 | 71 | - d2adc33: update config 72 | 73 | ## 0.0.2 74 | 75 | ### Patch Changes 76 | 77 | - update pkg.json 78 | - 7bcac90: init from personal project 79 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Scott Spence 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-memory-libsql 2 | 3 | A high-performance, persistent memory system for the Model Context 4 | Protocol (MCP) powered by libSQL. This server provides vector search 5 | capabilities and efficient knowledge storage using libSQL as the 6 | backing store. 7 | 8 | 9 | Glama badge 10 | 11 | 12 | ## Features 13 | 14 | - 🚀 High-performance vector search using libSQL 15 | - 💾 Persistent storage of entities and relations 16 | - 🔍 Semantic search capabilities 17 | - 🔄 Knowledge graph management 18 | - 🌐 Compatible with local and remote libSQL databases 19 | - 🔒 Secure token-based authentication for remote databases 20 | 21 | ## Configuration 22 | 23 | This server is designed to be used as part of an MCP configuration. 24 | Here are examples for different environments: 25 | 26 | ### Cline Configuration 27 | 28 | Add this to your Cline MCP settings: 29 | 30 | ```json 31 | { 32 | "mcpServers": { 33 | "mcp-memory-libsql": { 34 | "command": "npx", 35 | "args": ["-y", "mcp-memory-libsql"], 36 | "env": { 37 | "LIBSQL_URL": "file:/path/to/your/database.db" 38 | } 39 | } 40 | } 41 | } 42 | ``` 43 | 44 | ### Claude Desktop with WSL Configuration 45 | 46 | For a detailed guide on setting up this server with Claude Desktop in 47 | WSL, see 48 | [Getting MCP Server Working with Claude Desktop in WSL](https://scottspence.com/posts/getting-mcp-server-working-with-claude-desktop-in-wsl). 49 | 50 | Add this to your Claude Desktop configuration for WSL environments: 51 | 52 | ```json 53 | { 54 | "mcpServers": { 55 | "mcp-memory-libsql": { 56 | "command": "wsl.exe", 57 | "args": [ 58 | "bash", 59 | "-c", 60 | "source ~/.nvm/nvm.sh && LIBSQL_URL=file:/path/to/database.db /home/username/.nvm/versions/node/v20.12.1/bin/npx mcp-memory-libsql" 61 | ] 62 | } 63 | } 64 | } 65 | ``` 66 | 67 | ### Database Configuration 68 | 69 | The server supports both local SQLite and remote libSQL databases 70 | through the LIBSQL_URL environment variable: 71 | 72 | For local SQLite databases: 73 | 74 | ```json 75 | { 76 | "env": { 77 | "LIBSQL_URL": "file:/path/to/database.db" 78 | } 79 | } 80 | ``` 81 | 82 | For remote libSQL databases (e.g., Turso): 83 | 84 | ```json 85 | { 86 | "env": { 87 | "LIBSQL_URL": "libsql://your-database.turso.io", 88 | "LIBSQL_AUTH_TOKEN": "your-auth-token" 89 | } 90 | } 91 | ``` 92 | 93 | Note: When using WSL, ensure the database path uses the Linux 94 | filesystem format (e.g., `/home/username/...`) rather than Windows 95 | format. 96 | 97 | By default, if no URL is provided, it will use `file:/memory-tool.db` 98 | in the current directory. 99 | 100 | ## API 101 | 102 | The server implements the standard MCP memory interface with 103 | additional vector search capabilities: 104 | 105 | - Entity Management 106 | - Create/Update entities with embeddings 107 | - Delete entities 108 | - Search entities by similarity 109 | - Relation Management 110 | - Create relations between entities 111 | - Delete relations 112 | - Query related entities 113 | 114 | ## Architecture 115 | 116 | The server uses a libSQL database with the following schema: 117 | 118 | - Entities table: Stores entity information and embeddings 119 | - Relations table: Stores relationships between entities 120 | - Vector search capabilities implemented using libSQL's built-in 121 | vector operations 122 | 123 | ## Development 124 | 125 | ### Publishing 126 | 127 | Due to npm 2FA requirements, publishing needs to be done manually: 128 | 129 | 1. Create a changeset (documents your changes): 130 | 131 | ```bash 132 | pnpm changeset 133 | ``` 134 | 135 | 2. Version the package (updates version and CHANGELOG): 136 | 137 | ```bash 138 | pnpm changeset version 139 | ``` 140 | 141 | 3. Publish to npm (will prompt for 2FA code): 142 | 143 | ```bash 144 | pnpm release 145 | ``` 146 | 147 | ## Contributing 148 | 149 | Contributions are welcome! Please read our contributing guidelines 150 | before submitting pull requests. 151 | 152 | ## License 153 | 154 | MIT License - see the [LICENSE](LICENSE) file for details. 155 | 156 | ## Acknowledgments 157 | 158 | - Built on the 159 | [Model Context Protocol](https://github.com/modelcontextprotocol) 160 | - Powered by [libSQL](https://github.com/tursodatabase/libsql) 161 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mcp-memory-libsql", 3 | "version": "0.0.14", 4 | "description": "LibSQL-based persistent memory tool for MCP", 5 | "license": "MIT", 6 | "type": "module", 7 | "main": "dist/index.js", 8 | "types": "dist/index.d.ts", 9 | "bin": { 10 | "mcp-memory-libsql": "./dist/index.js" 11 | }, 12 | "files": [ 13 | "dist", 14 | "README.md", 15 | "LICENSE" 16 | ], 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/spences10/mcp-memory-libsql" 20 | }, 21 | "bugs": { 22 | "url": "https://github.com/spences10/mcp-memory-libsql/issues" 23 | }, 24 | "homepage": "https://github.com/spences10/mcp-memory-libsql#readme", 25 | "keywords": [ 26 | "mcp", 27 | "memory", 28 | "vector", 29 | "libsql", 30 | "knowledge-graph", 31 | "database", 32 | "vector-search", 33 | "semantic-search", 34 | "knowledge-management" 35 | ], 36 | "scripts": { 37 | "build": "tsc && chmod +x dist/index.js", 38 | "start": "node dist/index.js", 39 | "dev": "node --loader ts-node/esm src/index.ts", 40 | "test": "jest", 41 | "migrate": "node --loader ts-node/esm src/db/migrations/run.ts", 42 | "prepare": "pnpm run build", 43 | "changeset": "changeset", 44 | "version": "changeset version", 45 | "release": "pnpm run build && changeset publish" 46 | }, 47 | "dependencies": { 48 | "@libsql/client": "^0.15.7", 49 | "@modelcontextprotocol/sdk": "1.11.5", 50 | "@types/node": "^22.15.21", 51 | "dotenv": "^16.5.0" 52 | }, 53 | "devDependencies": { 54 | "@changesets/cli": "^2.29.4", 55 | "@types/jest": "^29.5.14", 56 | "jest": "^29.7.0", 57 | "ts-jest": "^29.3.4", 58 | "ts-node": "^10.9.2", 59 | "typescript": "^5.8.3" 60 | }, 61 | "volta": { 62 | "node": "22.13.1" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@libsql/client': 12 | specifier: ^0.15.7 13 | version: 0.15.7 14 | '@modelcontextprotocol/sdk': 15 | specifier: 1.11.5 16 | version: 1.11.5 17 | '@types/node': 18 | specifier: ^22.15.21 19 | version: 22.15.21 20 | dotenv: 21 | specifier: ^16.5.0 22 | version: 16.5.0 23 | devDependencies: 24 | '@changesets/cli': 25 | specifier: ^2.29.4 26 | version: 2.29.4 27 | '@types/jest': 28 | specifier: ^29.5.14 29 | version: 29.5.14 30 | jest: 31 | specifier: ^29.7.0 32 | version: 29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 33 | ts-jest: 34 | specifier: ^29.3.4 35 | version: 29.3.4(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3) 36 | ts-node: 37 | specifier: ^10.9.2 38 | version: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) 39 | typescript: 40 | specifier: ^5.8.3 41 | version: 5.8.3 42 | 43 | packages: 44 | 45 | '@ampproject/remapping@2.3.0': 46 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 47 | engines: {node: '>=6.0.0'} 48 | 49 | '@babel/code-frame@7.26.2': 50 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 51 | engines: {node: '>=6.9.0'} 52 | 53 | '@babel/compat-data@7.26.5': 54 | resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} 55 | engines: {node: '>=6.9.0'} 56 | 57 | '@babel/core@7.26.0': 58 | resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} 59 | engines: {node: '>=6.9.0'} 60 | 61 | '@babel/generator@7.26.5': 62 | resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} 63 | engines: {node: '>=6.9.0'} 64 | 65 | '@babel/helper-compilation-targets@7.26.5': 66 | resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} 67 | engines: {node: '>=6.9.0'} 68 | 69 | '@babel/helper-module-imports@7.25.9': 70 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 71 | engines: {node: '>=6.9.0'} 72 | 73 | '@babel/helper-module-transforms@7.26.0': 74 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 75 | engines: {node: '>=6.9.0'} 76 | peerDependencies: 77 | '@babel/core': ^7.0.0 78 | 79 | '@babel/helper-plugin-utils@7.26.5': 80 | resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} 81 | engines: {node: '>=6.9.0'} 82 | 83 | '@babel/helper-string-parser@7.25.9': 84 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 85 | engines: {node: '>=6.9.0'} 86 | 87 | '@babel/helper-validator-identifier@7.25.9': 88 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 89 | engines: {node: '>=6.9.0'} 90 | 91 | '@babel/helper-validator-option@7.25.9': 92 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 93 | engines: {node: '>=6.9.0'} 94 | 95 | '@babel/helpers@7.26.0': 96 | resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} 97 | engines: {node: '>=6.9.0'} 98 | 99 | '@babel/parser@7.26.5': 100 | resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} 101 | engines: {node: '>=6.0.0'} 102 | hasBin: true 103 | 104 | '@babel/plugin-syntax-async-generators@7.8.4': 105 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 106 | peerDependencies: 107 | '@babel/core': ^7.0.0-0 108 | 109 | '@babel/plugin-syntax-bigint@7.8.3': 110 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 111 | peerDependencies: 112 | '@babel/core': ^7.0.0-0 113 | 114 | '@babel/plugin-syntax-class-properties@7.12.13': 115 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 116 | peerDependencies: 117 | '@babel/core': ^7.0.0-0 118 | 119 | '@babel/plugin-syntax-class-static-block@7.14.5': 120 | resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} 121 | engines: {node: '>=6.9.0'} 122 | peerDependencies: 123 | '@babel/core': ^7.0.0-0 124 | 125 | '@babel/plugin-syntax-import-attributes@7.26.0': 126 | resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} 127 | engines: {node: '>=6.9.0'} 128 | peerDependencies: 129 | '@babel/core': ^7.0.0-0 130 | 131 | '@babel/plugin-syntax-import-meta@7.10.4': 132 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 133 | peerDependencies: 134 | '@babel/core': ^7.0.0-0 135 | 136 | '@babel/plugin-syntax-json-strings@7.8.3': 137 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 138 | peerDependencies: 139 | '@babel/core': ^7.0.0-0 140 | 141 | '@babel/plugin-syntax-jsx@7.25.9': 142 | resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} 143 | engines: {node: '>=6.9.0'} 144 | peerDependencies: 145 | '@babel/core': ^7.0.0-0 146 | 147 | '@babel/plugin-syntax-logical-assignment-operators@7.10.4': 148 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 149 | peerDependencies: 150 | '@babel/core': ^7.0.0-0 151 | 152 | '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': 153 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 154 | peerDependencies: 155 | '@babel/core': ^7.0.0-0 156 | 157 | '@babel/plugin-syntax-numeric-separator@7.10.4': 158 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 159 | peerDependencies: 160 | '@babel/core': ^7.0.0-0 161 | 162 | '@babel/plugin-syntax-object-rest-spread@7.8.3': 163 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 164 | peerDependencies: 165 | '@babel/core': ^7.0.0-0 166 | 167 | '@babel/plugin-syntax-optional-catch-binding@7.8.3': 168 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 169 | peerDependencies: 170 | '@babel/core': ^7.0.0-0 171 | 172 | '@babel/plugin-syntax-optional-chaining@7.8.3': 173 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 174 | peerDependencies: 175 | '@babel/core': ^7.0.0-0 176 | 177 | '@babel/plugin-syntax-private-property-in-object@7.14.5': 178 | resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} 179 | engines: {node: '>=6.9.0'} 180 | peerDependencies: 181 | '@babel/core': ^7.0.0-0 182 | 183 | '@babel/plugin-syntax-top-level-await@7.14.5': 184 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 185 | engines: {node: '>=6.9.0'} 186 | peerDependencies: 187 | '@babel/core': ^7.0.0-0 188 | 189 | '@babel/plugin-syntax-typescript@7.25.9': 190 | resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} 191 | engines: {node: '>=6.9.0'} 192 | peerDependencies: 193 | '@babel/core': ^7.0.0-0 194 | 195 | '@babel/runtime@7.26.0': 196 | resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} 197 | engines: {node: '>=6.9.0'} 198 | 199 | '@babel/template@7.25.9': 200 | resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} 201 | engines: {node: '>=6.9.0'} 202 | 203 | '@babel/traverse@7.26.5': 204 | resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} 205 | engines: {node: '>=6.9.0'} 206 | 207 | '@babel/types@7.26.5': 208 | resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} 209 | engines: {node: '>=6.9.0'} 210 | 211 | '@bcoe/v8-coverage@0.2.3': 212 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 213 | 214 | '@changesets/apply-release-plan@7.0.12': 215 | resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} 216 | 217 | '@changesets/assemble-release-plan@6.0.8': 218 | resolution: {integrity: sha512-y8+8LvZCkKJdbUlpXFuqcavpzJR80PN0OIfn8HZdwK7Sh6MgLXm4hKY5vu6/NDoKp8lAlM4ERZCqRMLxP4m+MQ==} 219 | 220 | '@changesets/changelog-git@0.2.1': 221 | resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} 222 | 223 | '@changesets/cli@2.29.4': 224 | resolution: {integrity: sha512-VW30x9oiFp/un/80+5jLeWgEU6Btj8IqOgI+X/zAYu4usVOWXjPIK5jSSlt5jsCU7/6Z7AxEkarxBxGUqkAmNg==} 225 | hasBin: true 226 | 227 | '@changesets/config@3.1.1': 228 | resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} 229 | 230 | '@changesets/errors@0.2.0': 231 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} 232 | 233 | '@changesets/get-dependents-graph@2.1.3': 234 | resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} 235 | 236 | '@changesets/get-release-plan@4.0.12': 237 | resolution: {integrity: sha512-KukdEgaafnyGryUwpHG2kZ7xJquOmWWWk5mmoeQaSvZTWH1DC5D/Sw6ClgGFYtQnOMSQhgoEbDxAbpIIayKH1g==} 238 | 239 | '@changesets/get-version-range-type@0.4.0': 240 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} 241 | 242 | '@changesets/git@3.0.4': 243 | resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} 244 | 245 | '@changesets/logger@0.1.1': 246 | resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} 247 | 248 | '@changesets/parse@0.4.1': 249 | resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} 250 | 251 | '@changesets/pre@2.0.2': 252 | resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} 253 | 254 | '@changesets/read@0.6.5': 255 | resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} 256 | 257 | '@changesets/should-skip-package@0.1.2': 258 | resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} 259 | 260 | '@changesets/types@4.1.0': 261 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 262 | 263 | '@changesets/types@6.1.0': 264 | resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} 265 | 266 | '@changesets/write@0.4.0': 267 | resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} 268 | 269 | '@cspotcode/source-map-support@0.8.1': 270 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 271 | engines: {node: '>=12'} 272 | 273 | '@istanbuljs/load-nyc-config@1.1.0': 274 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 275 | engines: {node: '>=8'} 276 | 277 | '@istanbuljs/schema@0.1.3': 278 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 279 | engines: {node: '>=8'} 280 | 281 | '@jest/console@29.7.0': 282 | resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} 283 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 284 | 285 | '@jest/core@29.7.0': 286 | resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} 287 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 288 | peerDependencies: 289 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 290 | peerDependenciesMeta: 291 | node-notifier: 292 | optional: true 293 | 294 | '@jest/environment@29.7.0': 295 | resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} 296 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 297 | 298 | '@jest/expect-utils@29.7.0': 299 | resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} 300 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 301 | 302 | '@jest/expect@29.7.0': 303 | resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} 304 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 305 | 306 | '@jest/fake-timers@29.7.0': 307 | resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} 308 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 309 | 310 | '@jest/globals@29.7.0': 311 | resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} 312 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 313 | 314 | '@jest/reporters@29.7.0': 315 | resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} 316 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 317 | peerDependencies: 318 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 319 | peerDependenciesMeta: 320 | node-notifier: 321 | optional: true 322 | 323 | '@jest/schemas@29.6.3': 324 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} 325 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 326 | 327 | '@jest/source-map@29.6.3': 328 | resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} 329 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 330 | 331 | '@jest/test-result@29.7.0': 332 | resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} 333 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 334 | 335 | '@jest/test-sequencer@29.7.0': 336 | resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} 337 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 338 | 339 | '@jest/transform@29.7.0': 340 | resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} 341 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 342 | 343 | '@jest/types@29.6.3': 344 | resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} 345 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 346 | 347 | '@jridgewell/gen-mapping@0.3.8': 348 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 349 | engines: {node: '>=6.0.0'} 350 | 351 | '@jridgewell/resolve-uri@3.1.2': 352 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 353 | engines: {node: '>=6.0.0'} 354 | 355 | '@jridgewell/set-array@1.2.1': 356 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 357 | engines: {node: '>=6.0.0'} 358 | 359 | '@jridgewell/sourcemap-codec@1.5.0': 360 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 361 | 362 | '@jridgewell/trace-mapping@0.3.25': 363 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 364 | 365 | '@jridgewell/trace-mapping@0.3.9': 366 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 367 | 368 | '@libsql/client@0.15.7': 369 | resolution: {integrity: sha512-2rKekOBINDKXGwB0I5qeTDuom2944hEkWkjN8O41j95/HRKP+3sk/fq6/PoPJSuwY3pgWAS8vyby+FgOyPnIVQ==} 370 | 371 | '@libsql/core@0.15.7': 372 | resolution: {integrity: sha512-hW1++8iKAEnb7Y3EZ2zXRR+1K0MKdRT7SLaNgFkfwz6CmiIBY3sYN7VSftNS7IR6xKRvFBpoz10CC63NoFGkaQ==} 373 | 374 | '@libsql/darwin-arm64@0.5.11': 375 | resolution: {integrity: sha512-Av4+H8VypNZdbRbDKu5ogoCBHOdYh2Vx6iO7+0SACjcgnpqjnGL59lJUuX3fmV48VI6al1xORYJVApo//B5iqA==} 376 | cpu: [arm64] 377 | os: [darwin] 378 | 379 | '@libsql/darwin-x64@0.5.11': 380 | resolution: {integrity: sha512-+BXozvOKhwbye16itymY2YXeHOcIeZGORdJK2prfXA7Q2HR4/dRdUirR1o/koxxxG616uiWlAVj5WJ0j2IWkQA==} 381 | cpu: [x64] 382 | os: [darwin] 383 | 384 | '@libsql/hrana-client@0.7.0': 385 | resolution: {integrity: sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==} 386 | 387 | '@libsql/isomorphic-fetch@0.3.1': 388 | resolution: {integrity: sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==} 389 | engines: {node: '>=18.0.0'} 390 | 391 | '@libsql/isomorphic-ws@0.1.5': 392 | resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} 393 | 394 | '@libsql/linux-arm-gnueabihf@0.5.11': 395 | resolution: {integrity: sha512-znsVKbKgOerCNkIY0HjtvkioVGLskmGXZodZn3TMDRTmn1PIUt7/dnxU5moKMdKa1hKDSOC52dqF77nAdkn4UA==} 396 | cpu: [arm] 397 | os: [linux] 398 | 399 | '@libsql/linux-arm-musleabihf@0.5.11': 400 | resolution: {integrity: sha512-l4gJY6AvhQ4fUJRpjph3AW6pbiAUcVxJUH0oM5Pf/GnA9acpaDgLtle2hWMz16BSncg/Jl2jVpaJuyJsJ9E7YA==} 401 | cpu: [arm] 402 | os: [linux] 403 | 404 | '@libsql/linux-arm64-gnu@0.5.11': 405 | resolution: {integrity: sha512-axXEenVUnSKR25g0iqL/OH4z4qrPBNwdBhjTWZr613L9tnboDPAioP1kVEy77nN8C8CL/dyXh5X4vKuIwHrQpQ==} 406 | cpu: [arm64] 407 | os: [linux] 408 | 409 | '@libsql/linux-arm64-musl@0.5.11': 410 | resolution: {integrity: sha512-Pzz9dm2D78PQpy3pYKbvzBBOwdjg9c3yoQSu5QQQCGL4J5e1bZpa/p6Z3BoYBlvmdo1V36ljS6N4hRir/rnCxg==} 411 | cpu: [arm64] 412 | os: [linux] 413 | 414 | '@libsql/linux-x64-gnu@0.5.11': 415 | resolution: {integrity: sha512-DxOU0MqG7soKZFVzOo7Zot5qDajZjjOgjf/sOjeJf/aeRBr3KkKiwgWKnmjDhuhitahqc8Nu2D92/dsAuDHJsA==} 416 | cpu: [x64] 417 | os: [linux] 418 | 419 | '@libsql/linux-x64-musl@0.5.11': 420 | resolution: {integrity: sha512-uRou4r+PiDA616t2USnsjbot88ennTrwKqhVUY7S6LTPI3RiKizZg6YESCwhzofPtk8Ualp/hMQGTGSoW9DUKw==} 421 | cpu: [x64] 422 | os: [linux] 423 | 424 | '@libsql/win32-x64-msvc@0.5.11': 425 | resolution: {integrity: sha512-NES0P2pyx5XjveTYotTG03eoJwx0haJBYWXfqmcPLmbQ5u03Qmd7rxhLfWDdIRj4PrdhVProwdB0FA82ryLcKQ==} 426 | cpu: [x64] 427 | os: [win32] 428 | 429 | '@manypkg/find-root@1.1.0': 430 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 431 | 432 | '@manypkg/get-packages@1.1.3': 433 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 434 | 435 | '@modelcontextprotocol/sdk@1.11.5': 436 | resolution: {integrity: sha512-gS7Q7IHpKxjVaNLMUZyTtatZ63ca3h418zPPntAhu/MvG5yfz/8HMcDAOpvpQfx3V3dsw9QQxk8RuFNrQhLlgA==} 437 | engines: {node: '>=18'} 438 | 439 | '@neon-rs/load@0.0.4': 440 | resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} 441 | 442 | '@nodelib/fs.scandir@2.1.5': 443 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 444 | engines: {node: '>= 8'} 445 | 446 | '@nodelib/fs.stat@2.0.5': 447 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 448 | engines: {node: '>= 8'} 449 | 450 | '@nodelib/fs.walk@1.2.8': 451 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 452 | engines: {node: '>= 8'} 453 | 454 | '@sinclair/typebox@0.27.8': 455 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 456 | 457 | '@sinonjs/commons@3.0.1': 458 | resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} 459 | 460 | '@sinonjs/fake-timers@10.3.0': 461 | resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} 462 | 463 | '@tsconfig/node10@1.0.11': 464 | resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} 465 | 466 | '@tsconfig/node12@1.0.11': 467 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 468 | 469 | '@tsconfig/node14@1.0.3': 470 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 471 | 472 | '@tsconfig/node16@1.0.4': 473 | resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 474 | 475 | '@types/babel__core@7.20.5': 476 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 477 | 478 | '@types/babel__generator@7.6.8': 479 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 480 | 481 | '@types/babel__template@7.4.4': 482 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 483 | 484 | '@types/babel__traverse@7.20.6': 485 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 486 | 487 | '@types/graceful-fs@4.1.9': 488 | resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} 489 | 490 | '@types/istanbul-lib-coverage@2.0.6': 491 | resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} 492 | 493 | '@types/istanbul-lib-report@3.0.3': 494 | resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} 495 | 496 | '@types/istanbul-reports@3.0.4': 497 | resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} 498 | 499 | '@types/jest@29.5.14': 500 | resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} 501 | 502 | '@types/node@12.20.55': 503 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 504 | 505 | '@types/node@22.15.21': 506 | resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} 507 | 508 | '@types/stack-utils@2.0.3': 509 | resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} 510 | 511 | '@types/ws@8.5.13': 512 | resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} 513 | 514 | '@types/yargs-parser@21.0.3': 515 | resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} 516 | 517 | '@types/yargs@17.0.33': 518 | resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} 519 | 520 | accepts@2.0.0: 521 | resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} 522 | engines: {node: '>= 0.6'} 523 | 524 | acorn-walk@8.3.4: 525 | resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} 526 | engines: {node: '>=0.4.0'} 527 | 528 | acorn@8.14.0: 529 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 530 | engines: {node: '>=0.4.0'} 531 | hasBin: true 532 | 533 | ajv@8.17.1: 534 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 535 | 536 | ansi-colors@4.1.3: 537 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 538 | engines: {node: '>=6'} 539 | 540 | ansi-escapes@4.3.2: 541 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 542 | engines: {node: '>=8'} 543 | 544 | ansi-regex@5.0.1: 545 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 546 | engines: {node: '>=8'} 547 | 548 | ansi-styles@4.3.0: 549 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 550 | engines: {node: '>=8'} 551 | 552 | ansi-styles@5.2.0: 553 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 554 | engines: {node: '>=10'} 555 | 556 | anymatch@3.1.3: 557 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 558 | engines: {node: '>= 8'} 559 | 560 | arg@4.1.3: 561 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 562 | 563 | argparse@1.0.10: 564 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 565 | 566 | array-union@2.1.0: 567 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 568 | engines: {node: '>=8'} 569 | 570 | async@3.2.6: 571 | resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} 572 | 573 | babel-jest@29.7.0: 574 | resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} 575 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 576 | peerDependencies: 577 | '@babel/core': ^7.8.0 578 | 579 | babel-plugin-istanbul@6.1.1: 580 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} 581 | engines: {node: '>=8'} 582 | 583 | babel-plugin-jest-hoist@29.6.3: 584 | resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} 585 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 586 | 587 | babel-preset-current-node-syntax@1.1.0: 588 | resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} 589 | peerDependencies: 590 | '@babel/core': ^7.0.0 591 | 592 | babel-preset-jest@29.6.3: 593 | resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} 594 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 595 | peerDependencies: 596 | '@babel/core': ^7.0.0 597 | 598 | balanced-match@1.0.2: 599 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 600 | 601 | better-path-resolve@1.0.0: 602 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 603 | engines: {node: '>=4'} 604 | 605 | body-parser@2.1.0: 606 | resolution: {integrity: sha512-/hPxh61E+ll0Ujp24Ilm64cykicul1ypfwjVttduAiEdtnJFvLePSrIPk+HMImtNv5270wOGCb1Tns2rybMkoQ==} 607 | engines: {node: '>=18'} 608 | 609 | brace-expansion@1.1.11: 610 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 611 | 612 | brace-expansion@2.0.1: 613 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 614 | 615 | braces@3.0.3: 616 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 617 | engines: {node: '>=8'} 618 | 619 | browserslist@4.24.4: 620 | resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} 621 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 622 | hasBin: true 623 | 624 | bs-logger@0.2.6: 625 | resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} 626 | engines: {node: '>= 6'} 627 | 628 | bser@2.1.1: 629 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 630 | 631 | buffer-from@1.1.2: 632 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 633 | 634 | bytes@3.1.2: 635 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 636 | engines: {node: '>= 0.8'} 637 | 638 | call-bind-apply-helpers@1.0.2: 639 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 640 | engines: {node: '>= 0.4'} 641 | 642 | call-bound@1.0.3: 643 | resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} 644 | engines: {node: '>= 0.4'} 645 | 646 | callsites@3.1.0: 647 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 648 | engines: {node: '>=6'} 649 | 650 | camelcase@5.3.1: 651 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 652 | engines: {node: '>=6'} 653 | 654 | camelcase@6.3.0: 655 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 656 | engines: {node: '>=10'} 657 | 658 | caniuse-lite@1.0.30001692: 659 | resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} 660 | 661 | chalk@4.1.2: 662 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 663 | engines: {node: '>=10'} 664 | 665 | char-regex@1.0.2: 666 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 667 | engines: {node: '>=10'} 668 | 669 | chardet@0.7.0: 670 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 671 | 672 | ci-info@3.9.0: 673 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 674 | engines: {node: '>=8'} 675 | 676 | cjs-module-lexer@1.4.1: 677 | resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} 678 | 679 | cliui@8.0.1: 680 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 681 | engines: {node: '>=12'} 682 | 683 | co@4.6.0: 684 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} 685 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 686 | 687 | collect-v8-coverage@1.0.2: 688 | resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} 689 | 690 | color-convert@2.0.1: 691 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 692 | engines: {node: '>=7.0.0'} 693 | 694 | color-name@1.1.4: 695 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 696 | 697 | concat-map@0.0.1: 698 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 699 | 700 | content-disposition@1.0.0: 701 | resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} 702 | engines: {node: '>= 0.6'} 703 | 704 | content-type@1.0.5: 705 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 706 | engines: {node: '>= 0.6'} 707 | 708 | convert-source-map@2.0.0: 709 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 710 | 711 | cookie-signature@1.2.2: 712 | resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} 713 | engines: {node: '>=6.6.0'} 714 | 715 | cookie@0.7.1: 716 | resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} 717 | engines: {node: '>= 0.6'} 718 | 719 | cors@2.8.5: 720 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 721 | engines: {node: '>= 0.10'} 722 | 723 | create-jest@29.7.0: 724 | resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} 725 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 726 | hasBin: true 727 | 728 | create-require@1.1.1: 729 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 730 | 731 | cross-spawn@7.0.6: 732 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 733 | engines: {node: '>= 8'} 734 | 735 | data-uri-to-buffer@4.0.1: 736 | resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 737 | engines: {node: '>= 12'} 738 | 739 | debug@2.6.9: 740 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 741 | peerDependencies: 742 | supports-color: '*' 743 | peerDependenciesMeta: 744 | supports-color: 745 | optional: true 746 | 747 | debug@4.3.6: 748 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} 749 | engines: {node: '>=6.0'} 750 | peerDependencies: 751 | supports-color: '*' 752 | peerDependenciesMeta: 753 | supports-color: 754 | optional: true 755 | 756 | debug@4.4.0: 757 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 758 | engines: {node: '>=6.0'} 759 | peerDependencies: 760 | supports-color: '*' 761 | peerDependenciesMeta: 762 | supports-color: 763 | optional: true 764 | 765 | dedent@1.5.3: 766 | resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} 767 | peerDependencies: 768 | babel-plugin-macros: ^3.1.0 769 | peerDependenciesMeta: 770 | babel-plugin-macros: 771 | optional: true 772 | 773 | deepmerge@4.3.1: 774 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 775 | engines: {node: '>=0.10.0'} 776 | 777 | depd@2.0.0: 778 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 779 | engines: {node: '>= 0.8'} 780 | 781 | destroy@1.2.0: 782 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 783 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 784 | 785 | detect-indent@6.1.0: 786 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 787 | engines: {node: '>=8'} 788 | 789 | detect-libc@2.0.2: 790 | resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 791 | engines: {node: '>=8'} 792 | 793 | detect-newline@3.1.0: 794 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 795 | engines: {node: '>=8'} 796 | 797 | diff-sequences@29.6.3: 798 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} 799 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 800 | 801 | diff@4.0.2: 802 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 803 | engines: {node: '>=0.3.1'} 804 | 805 | dir-glob@3.0.1: 806 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 807 | engines: {node: '>=8'} 808 | 809 | dotenv@16.5.0: 810 | resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} 811 | engines: {node: '>=12'} 812 | 813 | dunder-proto@1.0.1: 814 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 815 | engines: {node: '>= 0.4'} 816 | 817 | ee-first@1.1.1: 818 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 819 | 820 | ejs@3.1.10: 821 | resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} 822 | engines: {node: '>=0.10.0'} 823 | hasBin: true 824 | 825 | electron-to-chromium@1.5.82: 826 | resolution: {integrity: sha512-Zq16uk1hfQhyGx5GpwPAYDwddJuSGhtRhgOA2mCxANYaDT79nAeGnaXogMGng4KqLaJUVnOnuL0+TDop9nLOiA==} 827 | 828 | emittery@0.13.1: 829 | resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} 830 | engines: {node: '>=12'} 831 | 832 | emoji-regex@8.0.0: 833 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 834 | 835 | encodeurl@1.0.2: 836 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 837 | engines: {node: '>= 0.8'} 838 | 839 | encodeurl@2.0.0: 840 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 841 | engines: {node: '>= 0.8'} 842 | 843 | enquirer@2.4.1: 844 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 845 | engines: {node: '>=8.6'} 846 | 847 | error-ex@1.3.2: 848 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 849 | 850 | es-define-property@1.0.1: 851 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 852 | engines: {node: '>= 0.4'} 853 | 854 | es-errors@1.3.0: 855 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 856 | engines: {node: '>= 0.4'} 857 | 858 | es-object-atoms@1.1.1: 859 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 860 | engines: {node: '>= 0.4'} 861 | 862 | escalade@3.2.0: 863 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 864 | engines: {node: '>=6'} 865 | 866 | escape-html@1.0.3: 867 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 868 | 869 | escape-string-regexp@2.0.0: 870 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 871 | engines: {node: '>=8'} 872 | 873 | esprima@4.0.1: 874 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 875 | engines: {node: '>=4'} 876 | hasBin: true 877 | 878 | etag@1.8.1: 879 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 880 | engines: {node: '>= 0.6'} 881 | 882 | eventsource-parser@3.0.0: 883 | resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} 884 | engines: {node: '>=18.0.0'} 885 | 886 | eventsource@3.0.2: 887 | resolution: {integrity: sha512-YolzkJNxsTL3tCJMWFxpxtG2sCjbZ4LQUBUrkdaJK0ub0p6lmJt+2+1SwhKjLc652lpH9L/79Ptez972H9tphw==} 888 | engines: {node: '>=18.0.0'} 889 | 890 | execa@5.1.1: 891 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 892 | engines: {node: '>=10'} 893 | 894 | exit@0.1.2: 895 | resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} 896 | engines: {node: '>= 0.8.0'} 897 | 898 | expect@29.7.0: 899 | resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} 900 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 901 | 902 | express-rate-limit@7.5.0: 903 | resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} 904 | engines: {node: '>= 16'} 905 | peerDependencies: 906 | express: ^4.11 || 5 || ^5.0.0-beta.1 907 | 908 | express@5.0.1: 909 | resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==} 910 | engines: {node: '>= 18'} 911 | 912 | extendable-error@0.1.7: 913 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 914 | 915 | external-editor@3.1.0: 916 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 917 | engines: {node: '>=4'} 918 | 919 | fast-deep-equal@3.1.3: 920 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 921 | 922 | fast-glob@3.3.3: 923 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 924 | engines: {node: '>=8.6.0'} 925 | 926 | fast-json-stable-stringify@2.1.0: 927 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 928 | 929 | fast-uri@3.0.6: 930 | resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} 931 | 932 | fastq@1.18.0: 933 | resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} 934 | 935 | fb-watchman@2.0.2: 936 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 937 | 938 | fetch-blob@3.2.0: 939 | resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 940 | engines: {node: ^12.20 || >= 14.13} 941 | 942 | filelist@1.0.4: 943 | resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} 944 | 945 | fill-range@7.1.1: 946 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 947 | engines: {node: '>=8'} 948 | 949 | finalhandler@2.0.0: 950 | resolution: {integrity: sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==} 951 | engines: {node: '>= 0.8'} 952 | 953 | find-up@4.1.0: 954 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 955 | engines: {node: '>=8'} 956 | 957 | formdata-polyfill@4.0.10: 958 | resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 959 | engines: {node: '>=12.20.0'} 960 | 961 | forwarded@0.2.0: 962 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 963 | engines: {node: '>= 0.6'} 964 | 965 | fresh@0.5.2: 966 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 967 | engines: {node: '>= 0.6'} 968 | 969 | fresh@2.0.0: 970 | resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 971 | engines: {node: '>= 0.8'} 972 | 973 | fs-extra@7.0.1: 974 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 975 | engines: {node: '>=6 <7 || >=8'} 976 | 977 | fs-extra@8.1.0: 978 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 979 | engines: {node: '>=6 <7 || >=8'} 980 | 981 | fs.realpath@1.0.0: 982 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 983 | 984 | fsevents@2.3.3: 985 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 986 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 987 | os: [darwin] 988 | 989 | function-bind@1.1.2: 990 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 991 | 992 | gensync@1.0.0-beta.2: 993 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 994 | engines: {node: '>=6.9.0'} 995 | 996 | get-caller-file@2.0.5: 997 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 998 | engines: {node: 6.* || 8.* || >= 10.*} 999 | 1000 | get-intrinsic@1.3.0: 1001 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 1002 | engines: {node: '>= 0.4'} 1003 | 1004 | get-package-type@0.1.0: 1005 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 1006 | engines: {node: '>=8.0.0'} 1007 | 1008 | get-proto@1.0.1: 1009 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 1010 | engines: {node: '>= 0.4'} 1011 | 1012 | get-stream@6.0.1: 1013 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1014 | engines: {node: '>=10'} 1015 | 1016 | glob-parent@5.1.2: 1017 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1018 | engines: {node: '>= 6'} 1019 | 1020 | glob@7.2.3: 1021 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1022 | deprecated: Glob versions prior to v9 are no longer supported 1023 | 1024 | globals@11.12.0: 1025 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1026 | engines: {node: '>=4'} 1027 | 1028 | globby@11.1.0: 1029 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1030 | engines: {node: '>=10'} 1031 | 1032 | gopd@1.2.0: 1033 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 1034 | engines: {node: '>= 0.4'} 1035 | 1036 | graceful-fs@4.2.11: 1037 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1038 | 1039 | has-flag@4.0.0: 1040 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1041 | engines: {node: '>=8'} 1042 | 1043 | has-symbols@1.1.0: 1044 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 1045 | engines: {node: '>= 0.4'} 1046 | 1047 | hasown@2.0.2: 1048 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1049 | engines: {node: '>= 0.4'} 1050 | 1051 | html-escaper@2.0.2: 1052 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1053 | 1054 | http-errors@2.0.0: 1055 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1056 | engines: {node: '>= 0.8'} 1057 | 1058 | human-id@4.1.1: 1059 | resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} 1060 | hasBin: true 1061 | 1062 | human-signals@2.1.0: 1063 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1064 | engines: {node: '>=10.17.0'} 1065 | 1066 | iconv-lite@0.4.24: 1067 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1068 | engines: {node: '>=0.10.0'} 1069 | 1070 | iconv-lite@0.5.2: 1071 | resolution: {integrity: sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==} 1072 | engines: {node: '>=0.10.0'} 1073 | 1074 | iconv-lite@0.6.3: 1075 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1076 | engines: {node: '>=0.10.0'} 1077 | 1078 | ignore@5.3.2: 1079 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1080 | engines: {node: '>= 4'} 1081 | 1082 | import-local@3.2.0: 1083 | resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} 1084 | engines: {node: '>=8'} 1085 | hasBin: true 1086 | 1087 | imurmurhash@0.1.4: 1088 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1089 | engines: {node: '>=0.8.19'} 1090 | 1091 | inflight@1.0.6: 1092 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1093 | 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. 1094 | 1095 | inherits@2.0.4: 1096 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1097 | 1098 | ipaddr.js@1.9.1: 1099 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1100 | engines: {node: '>= 0.10'} 1101 | 1102 | is-arrayish@0.2.1: 1103 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1104 | 1105 | is-core-module@2.16.1: 1106 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1107 | engines: {node: '>= 0.4'} 1108 | 1109 | is-extglob@2.1.1: 1110 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1111 | engines: {node: '>=0.10.0'} 1112 | 1113 | is-fullwidth-code-point@3.0.0: 1114 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1115 | engines: {node: '>=8'} 1116 | 1117 | is-generator-fn@2.1.0: 1118 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1119 | engines: {node: '>=6'} 1120 | 1121 | is-glob@4.0.3: 1122 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1123 | engines: {node: '>=0.10.0'} 1124 | 1125 | is-number@7.0.0: 1126 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1127 | engines: {node: '>=0.12.0'} 1128 | 1129 | is-promise@4.0.0: 1130 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 1131 | 1132 | is-stream@2.0.1: 1133 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1134 | engines: {node: '>=8'} 1135 | 1136 | is-subdir@1.2.0: 1137 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1138 | engines: {node: '>=4'} 1139 | 1140 | is-windows@1.0.2: 1141 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1142 | engines: {node: '>=0.10.0'} 1143 | 1144 | isexe@2.0.0: 1145 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1146 | 1147 | istanbul-lib-coverage@3.2.2: 1148 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 1149 | engines: {node: '>=8'} 1150 | 1151 | istanbul-lib-instrument@5.2.1: 1152 | resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} 1153 | engines: {node: '>=8'} 1154 | 1155 | istanbul-lib-instrument@6.0.3: 1156 | resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} 1157 | engines: {node: '>=10'} 1158 | 1159 | istanbul-lib-report@3.0.1: 1160 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 1161 | engines: {node: '>=10'} 1162 | 1163 | istanbul-lib-source-maps@4.0.1: 1164 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 1165 | engines: {node: '>=10'} 1166 | 1167 | istanbul-reports@3.1.7: 1168 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} 1169 | engines: {node: '>=8'} 1170 | 1171 | jake@10.9.2: 1172 | resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} 1173 | engines: {node: '>=10'} 1174 | hasBin: true 1175 | 1176 | jest-changed-files@29.7.0: 1177 | resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} 1178 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1179 | 1180 | jest-circus@29.7.0: 1181 | resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} 1182 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1183 | 1184 | jest-cli@29.7.0: 1185 | resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} 1186 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1187 | hasBin: true 1188 | peerDependencies: 1189 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1190 | peerDependenciesMeta: 1191 | node-notifier: 1192 | optional: true 1193 | 1194 | jest-config@29.7.0: 1195 | resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} 1196 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1197 | peerDependencies: 1198 | '@types/node': '*' 1199 | ts-node: '>=9.0.0' 1200 | peerDependenciesMeta: 1201 | '@types/node': 1202 | optional: true 1203 | ts-node: 1204 | optional: true 1205 | 1206 | jest-diff@29.7.0: 1207 | resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} 1208 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1209 | 1210 | jest-docblock@29.7.0: 1211 | resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} 1212 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1213 | 1214 | jest-each@29.7.0: 1215 | resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} 1216 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1217 | 1218 | jest-environment-node@29.7.0: 1219 | resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} 1220 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1221 | 1222 | jest-get-type@29.6.3: 1223 | resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} 1224 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1225 | 1226 | jest-haste-map@29.7.0: 1227 | resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} 1228 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1229 | 1230 | jest-leak-detector@29.7.0: 1231 | resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} 1232 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1233 | 1234 | jest-matcher-utils@29.7.0: 1235 | resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} 1236 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1237 | 1238 | jest-message-util@29.7.0: 1239 | resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} 1240 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1241 | 1242 | jest-mock@29.7.0: 1243 | resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} 1244 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1245 | 1246 | jest-pnp-resolver@1.2.3: 1247 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} 1248 | engines: {node: '>=6'} 1249 | peerDependencies: 1250 | jest-resolve: '*' 1251 | peerDependenciesMeta: 1252 | jest-resolve: 1253 | optional: true 1254 | 1255 | jest-regex-util@29.6.3: 1256 | resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} 1257 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1258 | 1259 | jest-resolve-dependencies@29.7.0: 1260 | resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} 1261 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1262 | 1263 | jest-resolve@29.7.0: 1264 | resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} 1265 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1266 | 1267 | jest-runner@29.7.0: 1268 | resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} 1269 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1270 | 1271 | jest-runtime@29.7.0: 1272 | resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} 1273 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1274 | 1275 | jest-snapshot@29.7.0: 1276 | resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} 1277 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1278 | 1279 | jest-util@29.7.0: 1280 | resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} 1281 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1282 | 1283 | jest-validate@29.7.0: 1284 | resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} 1285 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1286 | 1287 | jest-watcher@29.7.0: 1288 | resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} 1289 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1290 | 1291 | jest-worker@29.7.0: 1292 | resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} 1293 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1294 | 1295 | jest@29.7.0: 1296 | resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} 1297 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1298 | hasBin: true 1299 | peerDependencies: 1300 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1301 | peerDependenciesMeta: 1302 | node-notifier: 1303 | optional: true 1304 | 1305 | js-base64@3.7.7: 1306 | resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} 1307 | 1308 | js-tokens@4.0.0: 1309 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1310 | 1311 | js-yaml@3.14.1: 1312 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1313 | hasBin: true 1314 | 1315 | jsesc@3.1.0: 1316 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1317 | engines: {node: '>=6'} 1318 | hasBin: true 1319 | 1320 | json-parse-even-better-errors@2.3.1: 1321 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1322 | 1323 | json-schema-traverse@1.0.0: 1324 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1325 | 1326 | json5@2.2.3: 1327 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1328 | engines: {node: '>=6'} 1329 | hasBin: true 1330 | 1331 | jsonfile@4.0.0: 1332 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 1333 | 1334 | kleur@3.0.3: 1335 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 1336 | engines: {node: '>=6'} 1337 | 1338 | leven@3.1.0: 1339 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 1340 | engines: {node: '>=6'} 1341 | 1342 | libsql@0.5.11: 1343 | resolution: {integrity: sha512-P2xY1nL2Jl7oM75LcguAEYqouVcevWhLWT8RU/p9ldaqQx5s/chF9t5ZFXPWP0x9myQQ4SguRqPO+FqdnCzKQg==} 1344 | cpu: [x64, arm64, wasm32, arm] 1345 | os: [darwin, linux, win32] 1346 | 1347 | lines-and-columns@1.2.4: 1348 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1349 | 1350 | locate-path@5.0.0: 1351 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1352 | engines: {node: '>=8'} 1353 | 1354 | lodash.memoize@4.1.2: 1355 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} 1356 | 1357 | lodash.startcase@4.4.0: 1358 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 1359 | 1360 | lru-cache@5.1.1: 1361 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1362 | 1363 | make-dir@4.0.0: 1364 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 1365 | engines: {node: '>=10'} 1366 | 1367 | make-error@1.3.6: 1368 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1369 | 1370 | makeerror@1.0.12: 1371 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 1372 | 1373 | math-intrinsics@1.1.0: 1374 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1375 | engines: {node: '>= 0.4'} 1376 | 1377 | media-typer@1.1.0: 1378 | resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 1379 | engines: {node: '>= 0.8'} 1380 | 1381 | merge-descriptors@2.0.0: 1382 | resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} 1383 | engines: {node: '>=18'} 1384 | 1385 | merge-stream@2.0.0: 1386 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1387 | 1388 | merge2@1.4.1: 1389 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1390 | engines: {node: '>= 8'} 1391 | 1392 | methods@1.1.2: 1393 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1394 | engines: {node: '>= 0.6'} 1395 | 1396 | micromatch@4.0.8: 1397 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1398 | engines: {node: '>=8.6'} 1399 | 1400 | mime-db@1.52.0: 1401 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1402 | engines: {node: '>= 0.6'} 1403 | 1404 | mime-db@1.53.0: 1405 | resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} 1406 | engines: {node: '>= 0.6'} 1407 | 1408 | mime-types@2.1.35: 1409 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1410 | engines: {node: '>= 0.6'} 1411 | 1412 | mime-types@3.0.0: 1413 | resolution: {integrity: sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==} 1414 | engines: {node: '>= 0.6'} 1415 | 1416 | mimic-fn@2.1.0: 1417 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1418 | engines: {node: '>=6'} 1419 | 1420 | minimatch@3.1.2: 1421 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1422 | 1423 | minimatch@5.1.6: 1424 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 1425 | engines: {node: '>=10'} 1426 | 1427 | mri@1.2.0: 1428 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1429 | engines: {node: '>=4'} 1430 | 1431 | ms@2.0.0: 1432 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1433 | 1434 | ms@2.1.2: 1435 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1436 | 1437 | ms@2.1.3: 1438 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1439 | 1440 | natural-compare@1.4.0: 1441 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1442 | 1443 | negotiator@1.0.0: 1444 | resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} 1445 | engines: {node: '>= 0.6'} 1446 | 1447 | node-domexception@1.0.0: 1448 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 1449 | engines: {node: '>=10.5.0'} 1450 | deprecated: Use your platform's native DOMException instead 1451 | 1452 | node-fetch@3.3.2: 1453 | resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 1454 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1455 | 1456 | node-int64@0.4.0: 1457 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} 1458 | 1459 | node-releases@2.0.19: 1460 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1461 | 1462 | normalize-path@3.0.0: 1463 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1464 | engines: {node: '>=0.10.0'} 1465 | 1466 | npm-run-path@4.0.1: 1467 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1468 | engines: {node: '>=8'} 1469 | 1470 | object-assign@4.1.1: 1471 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1472 | engines: {node: '>=0.10.0'} 1473 | 1474 | object-inspect@1.13.4: 1475 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 1476 | engines: {node: '>= 0.4'} 1477 | 1478 | on-finished@2.4.1: 1479 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1480 | engines: {node: '>= 0.8'} 1481 | 1482 | once@1.4.0: 1483 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1484 | 1485 | onetime@5.1.2: 1486 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1487 | engines: {node: '>=6'} 1488 | 1489 | os-tmpdir@1.0.2: 1490 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 1491 | engines: {node: '>=0.10.0'} 1492 | 1493 | outdent@0.5.0: 1494 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 1495 | 1496 | p-filter@2.1.0: 1497 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 1498 | engines: {node: '>=8'} 1499 | 1500 | p-limit@2.3.0: 1501 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1502 | engines: {node: '>=6'} 1503 | 1504 | p-limit@3.1.0: 1505 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1506 | engines: {node: '>=10'} 1507 | 1508 | p-locate@4.1.0: 1509 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1510 | engines: {node: '>=8'} 1511 | 1512 | p-map@2.1.0: 1513 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 1514 | engines: {node: '>=6'} 1515 | 1516 | p-try@2.2.0: 1517 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1518 | engines: {node: '>=6'} 1519 | 1520 | package-manager-detector@0.2.8: 1521 | resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} 1522 | 1523 | parse-json@5.2.0: 1524 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1525 | engines: {node: '>=8'} 1526 | 1527 | parseurl@1.3.3: 1528 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1529 | engines: {node: '>= 0.8'} 1530 | 1531 | path-exists@4.0.0: 1532 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1533 | engines: {node: '>=8'} 1534 | 1535 | path-is-absolute@1.0.1: 1536 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1537 | engines: {node: '>=0.10.0'} 1538 | 1539 | path-key@3.1.1: 1540 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1541 | engines: {node: '>=8'} 1542 | 1543 | path-parse@1.0.7: 1544 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1545 | 1546 | path-to-regexp@8.2.0: 1547 | resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} 1548 | engines: {node: '>=16'} 1549 | 1550 | path-type@4.0.0: 1551 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1552 | engines: {node: '>=8'} 1553 | 1554 | picocolors@1.1.1: 1555 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1556 | 1557 | picomatch@2.3.1: 1558 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1559 | engines: {node: '>=8.6'} 1560 | 1561 | pify@4.0.1: 1562 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 1563 | engines: {node: '>=6'} 1564 | 1565 | pirates@4.0.6: 1566 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1567 | engines: {node: '>= 6'} 1568 | 1569 | pkce-challenge@5.0.0: 1570 | resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} 1571 | engines: {node: '>=16.20.0'} 1572 | 1573 | pkg-dir@4.2.0: 1574 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1575 | engines: {node: '>=8'} 1576 | 1577 | prettier@2.8.8: 1578 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1579 | engines: {node: '>=10.13.0'} 1580 | hasBin: true 1581 | 1582 | pretty-format@29.7.0: 1583 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} 1584 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1585 | 1586 | promise-limit@2.7.0: 1587 | resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} 1588 | 1589 | prompts@2.4.2: 1590 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 1591 | engines: {node: '>= 6'} 1592 | 1593 | proxy-addr@2.0.7: 1594 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1595 | engines: {node: '>= 0.10'} 1596 | 1597 | pure-rand@6.1.0: 1598 | resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} 1599 | 1600 | qs@6.13.0: 1601 | resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} 1602 | engines: {node: '>=0.6'} 1603 | 1604 | qs@6.14.0: 1605 | resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} 1606 | engines: {node: '>=0.6'} 1607 | 1608 | queue-microtask@1.2.3: 1609 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1610 | 1611 | range-parser@1.2.1: 1612 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1613 | engines: {node: '>= 0.6'} 1614 | 1615 | raw-body@3.0.0: 1616 | resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} 1617 | engines: {node: '>= 0.8'} 1618 | 1619 | react-is@18.3.1: 1620 | resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} 1621 | 1622 | read-yaml-file@1.1.0: 1623 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 1624 | engines: {node: '>=6'} 1625 | 1626 | regenerator-runtime@0.14.1: 1627 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1628 | 1629 | require-directory@2.1.1: 1630 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1631 | engines: {node: '>=0.10.0'} 1632 | 1633 | require-from-string@2.0.2: 1634 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1635 | engines: {node: '>=0.10.0'} 1636 | 1637 | resolve-cwd@3.0.0: 1638 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 1639 | engines: {node: '>=8'} 1640 | 1641 | resolve-from@5.0.0: 1642 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1643 | engines: {node: '>=8'} 1644 | 1645 | resolve.exports@2.0.3: 1646 | resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} 1647 | engines: {node: '>=10'} 1648 | 1649 | resolve@1.22.10: 1650 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1651 | engines: {node: '>= 0.4'} 1652 | hasBin: true 1653 | 1654 | reusify@1.0.4: 1655 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1656 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1657 | 1658 | router@2.1.0: 1659 | resolution: {integrity: sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==} 1660 | engines: {node: '>= 18'} 1661 | 1662 | run-parallel@1.2.0: 1663 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1664 | 1665 | safe-buffer@5.2.1: 1666 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1667 | 1668 | safer-buffer@2.1.2: 1669 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1670 | 1671 | semver@6.3.1: 1672 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1673 | hasBin: true 1674 | 1675 | semver@7.7.1: 1676 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1677 | engines: {node: '>=10'} 1678 | hasBin: true 1679 | 1680 | semver@7.7.2: 1681 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1682 | engines: {node: '>=10'} 1683 | hasBin: true 1684 | 1685 | send@1.1.0: 1686 | resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} 1687 | engines: {node: '>= 18'} 1688 | 1689 | serve-static@2.1.0: 1690 | resolution: {integrity: sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==} 1691 | engines: {node: '>= 18'} 1692 | 1693 | setprototypeof@1.2.0: 1694 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1695 | 1696 | shebang-command@2.0.0: 1697 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1698 | engines: {node: '>=8'} 1699 | 1700 | shebang-regex@3.0.0: 1701 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1702 | engines: {node: '>=8'} 1703 | 1704 | side-channel-list@1.0.0: 1705 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1706 | engines: {node: '>= 0.4'} 1707 | 1708 | side-channel-map@1.0.1: 1709 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1710 | engines: {node: '>= 0.4'} 1711 | 1712 | side-channel-weakmap@1.0.2: 1713 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1714 | engines: {node: '>= 0.4'} 1715 | 1716 | side-channel@1.1.0: 1717 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1718 | engines: {node: '>= 0.4'} 1719 | 1720 | signal-exit@3.0.7: 1721 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1722 | 1723 | signal-exit@4.1.0: 1724 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1725 | engines: {node: '>=14'} 1726 | 1727 | sisteransi@1.0.5: 1728 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 1729 | 1730 | slash@3.0.0: 1731 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1732 | engines: {node: '>=8'} 1733 | 1734 | source-map-support@0.5.13: 1735 | resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} 1736 | 1737 | source-map@0.6.1: 1738 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1739 | engines: {node: '>=0.10.0'} 1740 | 1741 | spawndamnit@3.0.1: 1742 | resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} 1743 | 1744 | sprintf-js@1.0.3: 1745 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 1746 | 1747 | stack-utils@2.0.6: 1748 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 1749 | engines: {node: '>=10'} 1750 | 1751 | statuses@2.0.1: 1752 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1753 | engines: {node: '>= 0.8'} 1754 | 1755 | string-length@4.0.2: 1756 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 1757 | engines: {node: '>=10'} 1758 | 1759 | string-width@4.2.3: 1760 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1761 | engines: {node: '>=8'} 1762 | 1763 | strip-ansi@6.0.1: 1764 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1765 | engines: {node: '>=8'} 1766 | 1767 | strip-bom@3.0.0: 1768 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1769 | engines: {node: '>=4'} 1770 | 1771 | strip-bom@4.0.0: 1772 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 1773 | engines: {node: '>=8'} 1774 | 1775 | strip-final-newline@2.0.0: 1776 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1777 | engines: {node: '>=6'} 1778 | 1779 | strip-json-comments@3.1.1: 1780 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1781 | engines: {node: '>=8'} 1782 | 1783 | supports-color@7.2.0: 1784 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1785 | engines: {node: '>=8'} 1786 | 1787 | supports-color@8.1.1: 1788 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 1789 | engines: {node: '>=10'} 1790 | 1791 | supports-preserve-symlinks-flag@1.0.0: 1792 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1793 | engines: {node: '>= 0.4'} 1794 | 1795 | term-size@2.2.1: 1796 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 1797 | engines: {node: '>=8'} 1798 | 1799 | test-exclude@6.0.0: 1800 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 1801 | engines: {node: '>=8'} 1802 | 1803 | tmp@0.0.33: 1804 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 1805 | engines: {node: '>=0.6.0'} 1806 | 1807 | tmpl@1.0.5: 1808 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 1809 | 1810 | to-regex-range@5.0.1: 1811 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1812 | engines: {node: '>=8.0'} 1813 | 1814 | toidentifier@1.0.1: 1815 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1816 | engines: {node: '>=0.6'} 1817 | 1818 | ts-jest@29.3.4: 1819 | resolution: {integrity: sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==} 1820 | engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} 1821 | hasBin: true 1822 | peerDependencies: 1823 | '@babel/core': '>=7.0.0-beta.0 <8' 1824 | '@jest/transform': ^29.0.0 1825 | '@jest/types': ^29.0.0 1826 | babel-jest: ^29.0.0 1827 | esbuild: '*' 1828 | jest: ^29.0.0 1829 | typescript: '>=4.3 <6' 1830 | peerDependenciesMeta: 1831 | '@babel/core': 1832 | optional: true 1833 | '@jest/transform': 1834 | optional: true 1835 | '@jest/types': 1836 | optional: true 1837 | babel-jest: 1838 | optional: true 1839 | esbuild: 1840 | optional: true 1841 | 1842 | ts-node@10.9.2: 1843 | resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} 1844 | hasBin: true 1845 | peerDependencies: 1846 | '@swc/core': '>=1.2.50' 1847 | '@swc/wasm': '>=1.2.50' 1848 | '@types/node': '*' 1849 | typescript: '>=2.7' 1850 | peerDependenciesMeta: 1851 | '@swc/core': 1852 | optional: true 1853 | '@swc/wasm': 1854 | optional: true 1855 | 1856 | type-detect@4.0.8: 1857 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 1858 | engines: {node: '>=4'} 1859 | 1860 | type-fest@0.21.3: 1861 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 1862 | engines: {node: '>=10'} 1863 | 1864 | type-fest@4.41.0: 1865 | resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 1866 | engines: {node: '>=16'} 1867 | 1868 | type-is@2.0.0: 1869 | resolution: {integrity: sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==} 1870 | engines: {node: '>= 0.6'} 1871 | 1872 | typescript@5.8.3: 1873 | resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1874 | engines: {node: '>=14.17'} 1875 | hasBin: true 1876 | 1877 | undici-types@6.21.0: 1878 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1879 | 1880 | universalify@0.1.2: 1881 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 1882 | engines: {node: '>= 4.0.0'} 1883 | 1884 | unpipe@1.0.0: 1885 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 1886 | engines: {node: '>= 0.8'} 1887 | 1888 | update-browserslist-db@1.1.2: 1889 | resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} 1890 | hasBin: true 1891 | peerDependencies: 1892 | browserslist: '>= 4.21.0' 1893 | 1894 | utils-merge@1.0.1: 1895 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 1896 | engines: {node: '>= 0.4.0'} 1897 | 1898 | v8-compile-cache-lib@3.0.1: 1899 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 1900 | 1901 | v8-to-istanbul@9.3.0: 1902 | resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} 1903 | engines: {node: '>=10.12.0'} 1904 | 1905 | vary@1.1.2: 1906 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 1907 | engines: {node: '>= 0.8'} 1908 | 1909 | walker@1.0.8: 1910 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 1911 | 1912 | web-streams-polyfill@3.3.3: 1913 | resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} 1914 | engines: {node: '>= 8'} 1915 | 1916 | which@2.0.2: 1917 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1918 | engines: {node: '>= 8'} 1919 | hasBin: true 1920 | 1921 | wrap-ansi@7.0.0: 1922 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1923 | engines: {node: '>=10'} 1924 | 1925 | wrappy@1.0.2: 1926 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1927 | 1928 | write-file-atomic@4.0.2: 1929 | resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} 1930 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1931 | 1932 | ws@8.18.0: 1933 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 1934 | engines: {node: '>=10.0.0'} 1935 | peerDependencies: 1936 | bufferutil: ^4.0.1 1937 | utf-8-validate: '>=5.0.2' 1938 | peerDependenciesMeta: 1939 | bufferutil: 1940 | optional: true 1941 | utf-8-validate: 1942 | optional: true 1943 | 1944 | y18n@5.0.8: 1945 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1946 | engines: {node: '>=10'} 1947 | 1948 | yallist@3.1.1: 1949 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1950 | 1951 | yargs-parser@21.1.1: 1952 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1953 | engines: {node: '>=12'} 1954 | 1955 | yargs@17.7.2: 1956 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 1957 | engines: {node: '>=12'} 1958 | 1959 | yn@3.1.1: 1960 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 1961 | engines: {node: '>=6'} 1962 | 1963 | yocto-queue@0.1.0: 1964 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1965 | engines: {node: '>=10'} 1966 | 1967 | zod-to-json-schema@3.24.1: 1968 | resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} 1969 | peerDependencies: 1970 | zod: ^3.24.1 1971 | 1972 | zod@3.24.1: 1973 | resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} 1974 | 1975 | snapshots: 1976 | 1977 | '@ampproject/remapping@2.3.0': 1978 | dependencies: 1979 | '@jridgewell/gen-mapping': 0.3.8 1980 | '@jridgewell/trace-mapping': 0.3.25 1981 | 1982 | '@babel/code-frame@7.26.2': 1983 | dependencies: 1984 | '@babel/helper-validator-identifier': 7.25.9 1985 | js-tokens: 4.0.0 1986 | picocolors: 1.1.1 1987 | 1988 | '@babel/compat-data@7.26.5': {} 1989 | 1990 | '@babel/core@7.26.0': 1991 | dependencies: 1992 | '@ampproject/remapping': 2.3.0 1993 | '@babel/code-frame': 7.26.2 1994 | '@babel/generator': 7.26.5 1995 | '@babel/helper-compilation-targets': 7.26.5 1996 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) 1997 | '@babel/helpers': 7.26.0 1998 | '@babel/parser': 7.26.5 1999 | '@babel/template': 7.25.9 2000 | '@babel/traverse': 7.26.5 2001 | '@babel/types': 7.26.5 2002 | convert-source-map: 2.0.0 2003 | debug: 4.4.0 2004 | gensync: 1.0.0-beta.2 2005 | json5: 2.2.3 2006 | semver: 6.3.1 2007 | transitivePeerDependencies: 2008 | - supports-color 2009 | 2010 | '@babel/generator@7.26.5': 2011 | dependencies: 2012 | '@babel/parser': 7.26.5 2013 | '@babel/types': 7.26.5 2014 | '@jridgewell/gen-mapping': 0.3.8 2015 | '@jridgewell/trace-mapping': 0.3.25 2016 | jsesc: 3.1.0 2017 | 2018 | '@babel/helper-compilation-targets@7.26.5': 2019 | dependencies: 2020 | '@babel/compat-data': 7.26.5 2021 | '@babel/helper-validator-option': 7.25.9 2022 | browserslist: 4.24.4 2023 | lru-cache: 5.1.1 2024 | semver: 6.3.1 2025 | 2026 | '@babel/helper-module-imports@7.25.9': 2027 | dependencies: 2028 | '@babel/traverse': 7.26.5 2029 | '@babel/types': 7.26.5 2030 | transitivePeerDependencies: 2031 | - supports-color 2032 | 2033 | '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': 2034 | dependencies: 2035 | '@babel/core': 7.26.0 2036 | '@babel/helper-module-imports': 7.25.9 2037 | '@babel/helper-validator-identifier': 7.25.9 2038 | '@babel/traverse': 7.26.5 2039 | transitivePeerDependencies: 2040 | - supports-color 2041 | 2042 | '@babel/helper-plugin-utils@7.26.5': {} 2043 | 2044 | '@babel/helper-string-parser@7.25.9': {} 2045 | 2046 | '@babel/helper-validator-identifier@7.25.9': {} 2047 | 2048 | '@babel/helper-validator-option@7.25.9': {} 2049 | 2050 | '@babel/helpers@7.26.0': 2051 | dependencies: 2052 | '@babel/template': 7.25.9 2053 | '@babel/types': 7.26.5 2054 | 2055 | '@babel/parser@7.26.5': 2056 | dependencies: 2057 | '@babel/types': 7.26.5 2058 | 2059 | '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': 2060 | dependencies: 2061 | '@babel/core': 7.26.0 2062 | '@babel/helper-plugin-utils': 7.26.5 2063 | 2064 | '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': 2065 | dependencies: 2066 | '@babel/core': 7.26.0 2067 | '@babel/helper-plugin-utils': 7.26.5 2068 | 2069 | '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': 2070 | dependencies: 2071 | '@babel/core': 7.26.0 2072 | '@babel/helper-plugin-utils': 7.26.5 2073 | 2074 | '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': 2075 | dependencies: 2076 | '@babel/core': 7.26.0 2077 | '@babel/helper-plugin-utils': 7.26.5 2078 | 2079 | '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': 2080 | dependencies: 2081 | '@babel/core': 7.26.0 2082 | '@babel/helper-plugin-utils': 7.26.5 2083 | 2084 | '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': 2085 | dependencies: 2086 | '@babel/core': 7.26.0 2087 | '@babel/helper-plugin-utils': 7.26.5 2088 | 2089 | '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': 2090 | dependencies: 2091 | '@babel/core': 7.26.0 2092 | '@babel/helper-plugin-utils': 7.26.5 2093 | 2094 | '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': 2095 | dependencies: 2096 | '@babel/core': 7.26.0 2097 | '@babel/helper-plugin-utils': 7.26.5 2098 | 2099 | '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': 2100 | dependencies: 2101 | '@babel/core': 7.26.0 2102 | '@babel/helper-plugin-utils': 7.26.5 2103 | 2104 | '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': 2105 | dependencies: 2106 | '@babel/core': 7.26.0 2107 | '@babel/helper-plugin-utils': 7.26.5 2108 | 2109 | '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': 2110 | dependencies: 2111 | '@babel/core': 7.26.0 2112 | '@babel/helper-plugin-utils': 7.26.5 2113 | 2114 | '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': 2115 | dependencies: 2116 | '@babel/core': 7.26.0 2117 | '@babel/helper-plugin-utils': 7.26.5 2118 | 2119 | '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': 2120 | dependencies: 2121 | '@babel/core': 7.26.0 2122 | '@babel/helper-plugin-utils': 7.26.5 2123 | 2124 | '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': 2125 | dependencies: 2126 | '@babel/core': 7.26.0 2127 | '@babel/helper-plugin-utils': 7.26.5 2128 | 2129 | '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': 2130 | dependencies: 2131 | '@babel/core': 7.26.0 2132 | '@babel/helper-plugin-utils': 7.26.5 2133 | 2134 | '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': 2135 | dependencies: 2136 | '@babel/core': 7.26.0 2137 | '@babel/helper-plugin-utils': 7.26.5 2138 | 2139 | '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': 2140 | dependencies: 2141 | '@babel/core': 7.26.0 2142 | '@babel/helper-plugin-utils': 7.26.5 2143 | 2144 | '@babel/runtime@7.26.0': 2145 | dependencies: 2146 | regenerator-runtime: 0.14.1 2147 | 2148 | '@babel/template@7.25.9': 2149 | dependencies: 2150 | '@babel/code-frame': 7.26.2 2151 | '@babel/parser': 7.26.5 2152 | '@babel/types': 7.26.5 2153 | 2154 | '@babel/traverse@7.26.5': 2155 | dependencies: 2156 | '@babel/code-frame': 7.26.2 2157 | '@babel/generator': 7.26.5 2158 | '@babel/parser': 7.26.5 2159 | '@babel/template': 7.25.9 2160 | '@babel/types': 7.26.5 2161 | debug: 4.4.0 2162 | globals: 11.12.0 2163 | transitivePeerDependencies: 2164 | - supports-color 2165 | 2166 | '@babel/types@7.26.5': 2167 | dependencies: 2168 | '@babel/helper-string-parser': 7.25.9 2169 | '@babel/helper-validator-identifier': 7.25.9 2170 | 2171 | '@bcoe/v8-coverage@0.2.3': {} 2172 | 2173 | '@changesets/apply-release-plan@7.0.12': 2174 | dependencies: 2175 | '@changesets/config': 3.1.1 2176 | '@changesets/get-version-range-type': 0.4.0 2177 | '@changesets/git': 3.0.4 2178 | '@changesets/should-skip-package': 0.1.2 2179 | '@changesets/types': 6.1.0 2180 | '@manypkg/get-packages': 1.1.3 2181 | detect-indent: 6.1.0 2182 | fs-extra: 7.0.1 2183 | lodash.startcase: 4.4.0 2184 | outdent: 0.5.0 2185 | prettier: 2.8.8 2186 | resolve-from: 5.0.0 2187 | semver: 7.7.1 2188 | 2189 | '@changesets/assemble-release-plan@6.0.8': 2190 | dependencies: 2191 | '@changesets/errors': 0.2.0 2192 | '@changesets/get-dependents-graph': 2.1.3 2193 | '@changesets/should-skip-package': 0.1.2 2194 | '@changesets/types': 6.1.0 2195 | '@manypkg/get-packages': 1.1.3 2196 | semver: 7.7.1 2197 | 2198 | '@changesets/changelog-git@0.2.1': 2199 | dependencies: 2200 | '@changesets/types': 6.1.0 2201 | 2202 | '@changesets/cli@2.29.4': 2203 | dependencies: 2204 | '@changesets/apply-release-plan': 7.0.12 2205 | '@changesets/assemble-release-plan': 6.0.8 2206 | '@changesets/changelog-git': 0.2.1 2207 | '@changesets/config': 3.1.1 2208 | '@changesets/errors': 0.2.0 2209 | '@changesets/get-dependents-graph': 2.1.3 2210 | '@changesets/get-release-plan': 4.0.12 2211 | '@changesets/git': 3.0.4 2212 | '@changesets/logger': 0.1.1 2213 | '@changesets/pre': 2.0.2 2214 | '@changesets/read': 0.6.5 2215 | '@changesets/should-skip-package': 0.1.2 2216 | '@changesets/types': 6.1.0 2217 | '@changesets/write': 0.4.0 2218 | '@manypkg/get-packages': 1.1.3 2219 | ansi-colors: 4.1.3 2220 | ci-info: 3.9.0 2221 | enquirer: 2.4.1 2222 | external-editor: 3.1.0 2223 | fs-extra: 7.0.1 2224 | mri: 1.2.0 2225 | p-limit: 2.3.0 2226 | package-manager-detector: 0.2.8 2227 | picocolors: 1.1.1 2228 | resolve-from: 5.0.0 2229 | semver: 7.7.1 2230 | spawndamnit: 3.0.1 2231 | term-size: 2.2.1 2232 | 2233 | '@changesets/config@3.1.1': 2234 | dependencies: 2235 | '@changesets/errors': 0.2.0 2236 | '@changesets/get-dependents-graph': 2.1.3 2237 | '@changesets/logger': 0.1.1 2238 | '@changesets/types': 6.1.0 2239 | '@manypkg/get-packages': 1.1.3 2240 | fs-extra: 7.0.1 2241 | micromatch: 4.0.8 2242 | 2243 | '@changesets/errors@0.2.0': 2244 | dependencies: 2245 | extendable-error: 0.1.7 2246 | 2247 | '@changesets/get-dependents-graph@2.1.3': 2248 | dependencies: 2249 | '@changesets/types': 6.1.0 2250 | '@manypkg/get-packages': 1.1.3 2251 | picocolors: 1.1.1 2252 | semver: 7.7.1 2253 | 2254 | '@changesets/get-release-plan@4.0.12': 2255 | dependencies: 2256 | '@changesets/assemble-release-plan': 6.0.8 2257 | '@changesets/config': 3.1.1 2258 | '@changesets/pre': 2.0.2 2259 | '@changesets/read': 0.6.5 2260 | '@changesets/types': 6.1.0 2261 | '@manypkg/get-packages': 1.1.3 2262 | 2263 | '@changesets/get-version-range-type@0.4.0': {} 2264 | 2265 | '@changesets/git@3.0.4': 2266 | dependencies: 2267 | '@changesets/errors': 0.2.0 2268 | '@manypkg/get-packages': 1.1.3 2269 | is-subdir: 1.2.0 2270 | micromatch: 4.0.8 2271 | spawndamnit: 3.0.1 2272 | 2273 | '@changesets/logger@0.1.1': 2274 | dependencies: 2275 | picocolors: 1.1.1 2276 | 2277 | '@changesets/parse@0.4.1': 2278 | dependencies: 2279 | '@changesets/types': 6.1.0 2280 | js-yaml: 3.14.1 2281 | 2282 | '@changesets/pre@2.0.2': 2283 | dependencies: 2284 | '@changesets/errors': 0.2.0 2285 | '@changesets/types': 6.1.0 2286 | '@manypkg/get-packages': 1.1.3 2287 | fs-extra: 7.0.1 2288 | 2289 | '@changesets/read@0.6.5': 2290 | dependencies: 2291 | '@changesets/git': 3.0.4 2292 | '@changesets/logger': 0.1.1 2293 | '@changesets/parse': 0.4.1 2294 | '@changesets/types': 6.1.0 2295 | fs-extra: 7.0.1 2296 | p-filter: 2.1.0 2297 | picocolors: 1.1.1 2298 | 2299 | '@changesets/should-skip-package@0.1.2': 2300 | dependencies: 2301 | '@changesets/types': 6.1.0 2302 | '@manypkg/get-packages': 1.1.3 2303 | 2304 | '@changesets/types@4.1.0': {} 2305 | 2306 | '@changesets/types@6.1.0': {} 2307 | 2308 | '@changesets/write@0.4.0': 2309 | dependencies: 2310 | '@changesets/types': 6.1.0 2311 | fs-extra: 7.0.1 2312 | human-id: 4.1.1 2313 | prettier: 2.8.8 2314 | 2315 | '@cspotcode/source-map-support@0.8.1': 2316 | dependencies: 2317 | '@jridgewell/trace-mapping': 0.3.9 2318 | 2319 | '@istanbuljs/load-nyc-config@1.1.0': 2320 | dependencies: 2321 | camelcase: 5.3.1 2322 | find-up: 4.1.0 2323 | get-package-type: 0.1.0 2324 | js-yaml: 3.14.1 2325 | resolve-from: 5.0.0 2326 | 2327 | '@istanbuljs/schema@0.1.3': {} 2328 | 2329 | '@jest/console@29.7.0': 2330 | dependencies: 2331 | '@jest/types': 29.6.3 2332 | '@types/node': 22.15.21 2333 | chalk: 4.1.2 2334 | jest-message-util: 29.7.0 2335 | jest-util: 29.7.0 2336 | slash: 3.0.0 2337 | 2338 | '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))': 2339 | dependencies: 2340 | '@jest/console': 29.7.0 2341 | '@jest/reporters': 29.7.0 2342 | '@jest/test-result': 29.7.0 2343 | '@jest/transform': 29.7.0 2344 | '@jest/types': 29.6.3 2345 | '@types/node': 22.15.21 2346 | ansi-escapes: 4.3.2 2347 | chalk: 4.1.2 2348 | ci-info: 3.9.0 2349 | exit: 0.1.2 2350 | graceful-fs: 4.2.11 2351 | jest-changed-files: 29.7.0 2352 | jest-config: 29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 2353 | jest-haste-map: 29.7.0 2354 | jest-message-util: 29.7.0 2355 | jest-regex-util: 29.6.3 2356 | jest-resolve: 29.7.0 2357 | jest-resolve-dependencies: 29.7.0 2358 | jest-runner: 29.7.0 2359 | jest-runtime: 29.7.0 2360 | jest-snapshot: 29.7.0 2361 | jest-util: 29.7.0 2362 | jest-validate: 29.7.0 2363 | jest-watcher: 29.7.0 2364 | micromatch: 4.0.8 2365 | pretty-format: 29.7.0 2366 | slash: 3.0.0 2367 | strip-ansi: 6.0.1 2368 | transitivePeerDependencies: 2369 | - babel-plugin-macros 2370 | - supports-color 2371 | - ts-node 2372 | 2373 | '@jest/environment@29.7.0': 2374 | dependencies: 2375 | '@jest/fake-timers': 29.7.0 2376 | '@jest/types': 29.6.3 2377 | '@types/node': 22.15.21 2378 | jest-mock: 29.7.0 2379 | 2380 | '@jest/expect-utils@29.7.0': 2381 | dependencies: 2382 | jest-get-type: 29.6.3 2383 | 2384 | '@jest/expect@29.7.0': 2385 | dependencies: 2386 | expect: 29.7.0 2387 | jest-snapshot: 29.7.0 2388 | transitivePeerDependencies: 2389 | - supports-color 2390 | 2391 | '@jest/fake-timers@29.7.0': 2392 | dependencies: 2393 | '@jest/types': 29.6.3 2394 | '@sinonjs/fake-timers': 10.3.0 2395 | '@types/node': 22.15.21 2396 | jest-message-util: 29.7.0 2397 | jest-mock: 29.7.0 2398 | jest-util: 29.7.0 2399 | 2400 | '@jest/globals@29.7.0': 2401 | dependencies: 2402 | '@jest/environment': 29.7.0 2403 | '@jest/expect': 29.7.0 2404 | '@jest/types': 29.6.3 2405 | jest-mock: 29.7.0 2406 | transitivePeerDependencies: 2407 | - supports-color 2408 | 2409 | '@jest/reporters@29.7.0': 2410 | dependencies: 2411 | '@bcoe/v8-coverage': 0.2.3 2412 | '@jest/console': 29.7.0 2413 | '@jest/test-result': 29.7.0 2414 | '@jest/transform': 29.7.0 2415 | '@jest/types': 29.6.3 2416 | '@jridgewell/trace-mapping': 0.3.25 2417 | '@types/node': 22.15.21 2418 | chalk: 4.1.2 2419 | collect-v8-coverage: 1.0.2 2420 | exit: 0.1.2 2421 | glob: 7.2.3 2422 | graceful-fs: 4.2.11 2423 | istanbul-lib-coverage: 3.2.2 2424 | istanbul-lib-instrument: 6.0.3 2425 | istanbul-lib-report: 3.0.1 2426 | istanbul-lib-source-maps: 4.0.1 2427 | istanbul-reports: 3.1.7 2428 | jest-message-util: 29.7.0 2429 | jest-util: 29.7.0 2430 | jest-worker: 29.7.0 2431 | slash: 3.0.0 2432 | string-length: 4.0.2 2433 | strip-ansi: 6.0.1 2434 | v8-to-istanbul: 9.3.0 2435 | transitivePeerDependencies: 2436 | - supports-color 2437 | 2438 | '@jest/schemas@29.6.3': 2439 | dependencies: 2440 | '@sinclair/typebox': 0.27.8 2441 | 2442 | '@jest/source-map@29.6.3': 2443 | dependencies: 2444 | '@jridgewell/trace-mapping': 0.3.25 2445 | callsites: 3.1.0 2446 | graceful-fs: 4.2.11 2447 | 2448 | '@jest/test-result@29.7.0': 2449 | dependencies: 2450 | '@jest/console': 29.7.0 2451 | '@jest/types': 29.6.3 2452 | '@types/istanbul-lib-coverage': 2.0.6 2453 | collect-v8-coverage: 1.0.2 2454 | 2455 | '@jest/test-sequencer@29.7.0': 2456 | dependencies: 2457 | '@jest/test-result': 29.7.0 2458 | graceful-fs: 4.2.11 2459 | jest-haste-map: 29.7.0 2460 | slash: 3.0.0 2461 | 2462 | '@jest/transform@29.7.0': 2463 | dependencies: 2464 | '@babel/core': 7.26.0 2465 | '@jest/types': 29.6.3 2466 | '@jridgewell/trace-mapping': 0.3.25 2467 | babel-plugin-istanbul: 6.1.1 2468 | chalk: 4.1.2 2469 | convert-source-map: 2.0.0 2470 | fast-json-stable-stringify: 2.1.0 2471 | graceful-fs: 4.2.11 2472 | jest-haste-map: 29.7.0 2473 | jest-regex-util: 29.6.3 2474 | jest-util: 29.7.0 2475 | micromatch: 4.0.8 2476 | pirates: 4.0.6 2477 | slash: 3.0.0 2478 | write-file-atomic: 4.0.2 2479 | transitivePeerDependencies: 2480 | - supports-color 2481 | 2482 | '@jest/types@29.6.3': 2483 | dependencies: 2484 | '@jest/schemas': 29.6.3 2485 | '@types/istanbul-lib-coverage': 2.0.6 2486 | '@types/istanbul-reports': 3.0.4 2487 | '@types/node': 22.15.21 2488 | '@types/yargs': 17.0.33 2489 | chalk: 4.1.2 2490 | 2491 | '@jridgewell/gen-mapping@0.3.8': 2492 | dependencies: 2493 | '@jridgewell/set-array': 1.2.1 2494 | '@jridgewell/sourcemap-codec': 1.5.0 2495 | '@jridgewell/trace-mapping': 0.3.25 2496 | 2497 | '@jridgewell/resolve-uri@3.1.2': {} 2498 | 2499 | '@jridgewell/set-array@1.2.1': {} 2500 | 2501 | '@jridgewell/sourcemap-codec@1.5.0': {} 2502 | 2503 | '@jridgewell/trace-mapping@0.3.25': 2504 | dependencies: 2505 | '@jridgewell/resolve-uri': 3.1.2 2506 | '@jridgewell/sourcemap-codec': 1.5.0 2507 | 2508 | '@jridgewell/trace-mapping@0.3.9': 2509 | dependencies: 2510 | '@jridgewell/resolve-uri': 3.1.2 2511 | '@jridgewell/sourcemap-codec': 1.5.0 2512 | 2513 | '@libsql/client@0.15.7': 2514 | dependencies: 2515 | '@libsql/core': 0.15.7 2516 | '@libsql/hrana-client': 0.7.0 2517 | js-base64: 3.7.7 2518 | libsql: 0.5.11 2519 | promise-limit: 2.7.0 2520 | transitivePeerDependencies: 2521 | - bufferutil 2522 | - utf-8-validate 2523 | 2524 | '@libsql/core@0.15.7': 2525 | dependencies: 2526 | js-base64: 3.7.7 2527 | 2528 | '@libsql/darwin-arm64@0.5.11': 2529 | optional: true 2530 | 2531 | '@libsql/darwin-x64@0.5.11': 2532 | optional: true 2533 | 2534 | '@libsql/hrana-client@0.7.0': 2535 | dependencies: 2536 | '@libsql/isomorphic-fetch': 0.3.1 2537 | '@libsql/isomorphic-ws': 0.1.5 2538 | js-base64: 3.7.7 2539 | node-fetch: 3.3.2 2540 | transitivePeerDependencies: 2541 | - bufferutil 2542 | - utf-8-validate 2543 | 2544 | '@libsql/isomorphic-fetch@0.3.1': {} 2545 | 2546 | '@libsql/isomorphic-ws@0.1.5': 2547 | dependencies: 2548 | '@types/ws': 8.5.13 2549 | ws: 8.18.0 2550 | transitivePeerDependencies: 2551 | - bufferutil 2552 | - utf-8-validate 2553 | 2554 | '@libsql/linux-arm-gnueabihf@0.5.11': 2555 | optional: true 2556 | 2557 | '@libsql/linux-arm-musleabihf@0.5.11': 2558 | optional: true 2559 | 2560 | '@libsql/linux-arm64-gnu@0.5.11': 2561 | optional: true 2562 | 2563 | '@libsql/linux-arm64-musl@0.5.11': 2564 | optional: true 2565 | 2566 | '@libsql/linux-x64-gnu@0.5.11': 2567 | optional: true 2568 | 2569 | '@libsql/linux-x64-musl@0.5.11': 2570 | optional: true 2571 | 2572 | '@libsql/win32-x64-msvc@0.5.11': 2573 | optional: true 2574 | 2575 | '@manypkg/find-root@1.1.0': 2576 | dependencies: 2577 | '@babel/runtime': 7.26.0 2578 | '@types/node': 12.20.55 2579 | find-up: 4.1.0 2580 | fs-extra: 8.1.0 2581 | 2582 | '@manypkg/get-packages@1.1.3': 2583 | dependencies: 2584 | '@babel/runtime': 7.26.0 2585 | '@changesets/types': 4.1.0 2586 | '@manypkg/find-root': 1.1.0 2587 | fs-extra: 8.1.0 2588 | globby: 11.1.0 2589 | read-yaml-file: 1.1.0 2590 | 2591 | '@modelcontextprotocol/sdk@1.11.5': 2592 | dependencies: 2593 | ajv: 8.17.1 2594 | content-type: 1.0.5 2595 | cors: 2.8.5 2596 | cross-spawn: 7.0.6 2597 | eventsource: 3.0.2 2598 | express: 5.0.1 2599 | express-rate-limit: 7.5.0(express@5.0.1) 2600 | pkce-challenge: 5.0.0 2601 | raw-body: 3.0.0 2602 | zod: 3.24.1 2603 | zod-to-json-schema: 3.24.1(zod@3.24.1) 2604 | transitivePeerDependencies: 2605 | - supports-color 2606 | 2607 | '@neon-rs/load@0.0.4': {} 2608 | 2609 | '@nodelib/fs.scandir@2.1.5': 2610 | dependencies: 2611 | '@nodelib/fs.stat': 2.0.5 2612 | run-parallel: 1.2.0 2613 | 2614 | '@nodelib/fs.stat@2.0.5': {} 2615 | 2616 | '@nodelib/fs.walk@1.2.8': 2617 | dependencies: 2618 | '@nodelib/fs.scandir': 2.1.5 2619 | fastq: 1.18.0 2620 | 2621 | '@sinclair/typebox@0.27.8': {} 2622 | 2623 | '@sinonjs/commons@3.0.1': 2624 | dependencies: 2625 | type-detect: 4.0.8 2626 | 2627 | '@sinonjs/fake-timers@10.3.0': 2628 | dependencies: 2629 | '@sinonjs/commons': 3.0.1 2630 | 2631 | '@tsconfig/node10@1.0.11': {} 2632 | 2633 | '@tsconfig/node12@1.0.11': {} 2634 | 2635 | '@tsconfig/node14@1.0.3': {} 2636 | 2637 | '@tsconfig/node16@1.0.4': {} 2638 | 2639 | '@types/babel__core@7.20.5': 2640 | dependencies: 2641 | '@babel/parser': 7.26.5 2642 | '@babel/types': 7.26.5 2643 | '@types/babel__generator': 7.6.8 2644 | '@types/babel__template': 7.4.4 2645 | '@types/babel__traverse': 7.20.6 2646 | 2647 | '@types/babel__generator@7.6.8': 2648 | dependencies: 2649 | '@babel/types': 7.26.5 2650 | 2651 | '@types/babel__template@7.4.4': 2652 | dependencies: 2653 | '@babel/parser': 7.26.5 2654 | '@babel/types': 7.26.5 2655 | 2656 | '@types/babel__traverse@7.20.6': 2657 | dependencies: 2658 | '@babel/types': 7.26.5 2659 | 2660 | '@types/graceful-fs@4.1.9': 2661 | dependencies: 2662 | '@types/node': 22.15.21 2663 | 2664 | '@types/istanbul-lib-coverage@2.0.6': {} 2665 | 2666 | '@types/istanbul-lib-report@3.0.3': 2667 | dependencies: 2668 | '@types/istanbul-lib-coverage': 2.0.6 2669 | 2670 | '@types/istanbul-reports@3.0.4': 2671 | dependencies: 2672 | '@types/istanbul-lib-report': 3.0.3 2673 | 2674 | '@types/jest@29.5.14': 2675 | dependencies: 2676 | expect: 29.7.0 2677 | pretty-format: 29.7.0 2678 | 2679 | '@types/node@12.20.55': {} 2680 | 2681 | '@types/node@22.15.21': 2682 | dependencies: 2683 | undici-types: 6.21.0 2684 | 2685 | '@types/stack-utils@2.0.3': {} 2686 | 2687 | '@types/ws@8.5.13': 2688 | dependencies: 2689 | '@types/node': 22.15.21 2690 | 2691 | '@types/yargs-parser@21.0.3': {} 2692 | 2693 | '@types/yargs@17.0.33': 2694 | dependencies: 2695 | '@types/yargs-parser': 21.0.3 2696 | 2697 | accepts@2.0.0: 2698 | dependencies: 2699 | mime-types: 3.0.0 2700 | negotiator: 1.0.0 2701 | 2702 | acorn-walk@8.3.4: 2703 | dependencies: 2704 | acorn: 8.14.0 2705 | 2706 | acorn@8.14.0: {} 2707 | 2708 | ajv@8.17.1: 2709 | dependencies: 2710 | fast-deep-equal: 3.1.3 2711 | fast-uri: 3.0.6 2712 | json-schema-traverse: 1.0.0 2713 | require-from-string: 2.0.2 2714 | 2715 | ansi-colors@4.1.3: {} 2716 | 2717 | ansi-escapes@4.3.2: 2718 | dependencies: 2719 | type-fest: 0.21.3 2720 | 2721 | ansi-regex@5.0.1: {} 2722 | 2723 | ansi-styles@4.3.0: 2724 | dependencies: 2725 | color-convert: 2.0.1 2726 | 2727 | ansi-styles@5.2.0: {} 2728 | 2729 | anymatch@3.1.3: 2730 | dependencies: 2731 | normalize-path: 3.0.0 2732 | picomatch: 2.3.1 2733 | 2734 | arg@4.1.3: {} 2735 | 2736 | argparse@1.0.10: 2737 | dependencies: 2738 | sprintf-js: 1.0.3 2739 | 2740 | array-union@2.1.0: {} 2741 | 2742 | async@3.2.6: {} 2743 | 2744 | babel-jest@29.7.0(@babel/core@7.26.0): 2745 | dependencies: 2746 | '@babel/core': 7.26.0 2747 | '@jest/transform': 29.7.0 2748 | '@types/babel__core': 7.20.5 2749 | babel-plugin-istanbul: 6.1.1 2750 | babel-preset-jest: 29.6.3(@babel/core@7.26.0) 2751 | chalk: 4.1.2 2752 | graceful-fs: 4.2.11 2753 | slash: 3.0.0 2754 | transitivePeerDependencies: 2755 | - supports-color 2756 | 2757 | babel-plugin-istanbul@6.1.1: 2758 | dependencies: 2759 | '@babel/helper-plugin-utils': 7.26.5 2760 | '@istanbuljs/load-nyc-config': 1.1.0 2761 | '@istanbuljs/schema': 0.1.3 2762 | istanbul-lib-instrument: 5.2.1 2763 | test-exclude: 6.0.0 2764 | transitivePeerDependencies: 2765 | - supports-color 2766 | 2767 | babel-plugin-jest-hoist@29.6.3: 2768 | dependencies: 2769 | '@babel/template': 7.25.9 2770 | '@babel/types': 7.26.5 2771 | '@types/babel__core': 7.20.5 2772 | '@types/babel__traverse': 7.20.6 2773 | 2774 | babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): 2775 | dependencies: 2776 | '@babel/core': 7.26.0 2777 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) 2778 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) 2779 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) 2780 | '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) 2781 | '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) 2782 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) 2783 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) 2784 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) 2785 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) 2786 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) 2787 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) 2788 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) 2789 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) 2790 | '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) 2791 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) 2792 | 2793 | babel-preset-jest@29.6.3(@babel/core@7.26.0): 2794 | dependencies: 2795 | '@babel/core': 7.26.0 2796 | babel-plugin-jest-hoist: 29.6.3 2797 | babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) 2798 | 2799 | balanced-match@1.0.2: {} 2800 | 2801 | better-path-resolve@1.0.0: 2802 | dependencies: 2803 | is-windows: 1.0.2 2804 | 2805 | body-parser@2.1.0: 2806 | dependencies: 2807 | bytes: 3.1.2 2808 | content-type: 1.0.5 2809 | debug: 4.4.0 2810 | http-errors: 2.0.0 2811 | iconv-lite: 0.5.2 2812 | on-finished: 2.4.1 2813 | qs: 6.14.0 2814 | raw-body: 3.0.0 2815 | type-is: 2.0.0 2816 | transitivePeerDependencies: 2817 | - supports-color 2818 | 2819 | brace-expansion@1.1.11: 2820 | dependencies: 2821 | balanced-match: 1.0.2 2822 | concat-map: 0.0.1 2823 | 2824 | brace-expansion@2.0.1: 2825 | dependencies: 2826 | balanced-match: 1.0.2 2827 | 2828 | braces@3.0.3: 2829 | dependencies: 2830 | fill-range: 7.1.1 2831 | 2832 | browserslist@4.24.4: 2833 | dependencies: 2834 | caniuse-lite: 1.0.30001692 2835 | electron-to-chromium: 1.5.82 2836 | node-releases: 2.0.19 2837 | update-browserslist-db: 1.1.2(browserslist@4.24.4) 2838 | 2839 | bs-logger@0.2.6: 2840 | dependencies: 2841 | fast-json-stable-stringify: 2.1.0 2842 | 2843 | bser@2.1.1: 2844 | dependencies: 2845 | node-int64: 0.4.0 2846 | 2847 | buffer-from@1.1.2: {} 2848 | 2849 | bytes@3.1.2: {} 2850 | 2851 | call-bind-apply-helpers@1.0.2: 2852 | dependencies: 2853 | es-errors: 1.3.0 2854 | function-bind: 1.1.2 2855 | 2856 | call-bound@1.0.3: 2857 | dependencies: 2858 | call-bind-apply-helpers: 1.0.2 2859 | get-intrinsic: 1.3.0 2860 | 2861 | callsites@3.1.0: {} 2862 | 2863 | camelcase@5.3.1: {} 2864 | 2865 | camelcase@6.3.0: {} 2866 | 2867 | caniuse-lite@1.0.30001692: {} 2868 | 2869 | chalk@4.1.2: 2870 | dependencies: 2871 | ansi-styles: 4.3.0 2872 | supports-color: 7.2.0 2873 | 2874 | char-regex@1.0.2: {} 2875 | 2876 | chardet@0.7.0: {} 2877 | 2878 | ci-info@3.9.0: {} 2879 | 2880 | cjs-module-lexer@1.4.1: {} 2881 | 2882 | cliui@8.0.1: 2883 | dependencies: 2884 | string-width: 4.2.3 2885 | strip-ansi: 6.0.1 2886 | wrap-ansi: 7.0.0 2887 | 2888 | co@4.6.0: {} 2889 | 2890 | collect-v8-coverage@1.0.2: {} 2891 | 2892 | color-convert@2.0.1: 2893 | dependencies: 2894 | color-name: 1.1.4 2895 | 2896 | color-name@1.1.4: {} 2897 | 2898 | concat-map@0.0.1: {} 2899 | 2900 | content-disposition@1.0.0: 2901 | dependencies: 2902 | safe-buffer: 5.2.1 2903 | 2904 | content-type@1.0.5: {} 2905 | 2906 | convert-source-map@2.0.0: {} 2907 | 2908 | cookie-signature@1.2.2: {} 2909 | 2910 | cookie@0.7.1: {} 2911 | 2912 | cors@2.8.5: 2913 | dependencies: 2914 | object-assign: 4.1.1 2915 | vary: 1.1.2 2916 | 2917 | create-jest@29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): 2918 | dependencies: 2919 | '@jest/types': 29.6.3 2920 | chalk: 4.1.2 2921 | exit: 0.1.2 2922 | graceful-fs: 4.2.11 2923 | jest-config: 29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 2924 | jest-util: 29.7.0 2925 | prompts: 2.4.2 2926 | transitivePeerDependencies: 2927 | - '@types/node' 2928 | - babel-plugin-macros 2929 | - supports-color 2930 | - ts-node 2931 | 2932 | create-require@1.1.1: {} 2933 | 2934 | cross-spawn@7.0.6: 2935 | dependencies: 2936 | path-key: 3.1.1 2937 | shebang-command: 2.0.0 2938 | which: 2.0.2 2939 | 2940 | data-uri-to-buffer@4.0.1: {} 2941 | 2942 | debug@2.6.9: 2943 | dependencies: 2944 | ms: 2.0.0 2945 | 2946 | debug@4.3.6: 2947 | dependencies: 2948 | ms: 2.1.2 2949 | 2950 | debug@4.4.0: 2951 | dependencies: 2952 | ms: 2.1.3 2953 | 2954 | dedent@1.5.3: {} 2955 | 2956 | deepmerge@4.3.1: {} 2957 | 2958 | depd@2.0.0: {} 2959 | 2960 | destroy@1.2.0: {} 2961 | 2962 | detect-indent@6.1.0: {} 2963 | 2964 | detect-libc@2.0.2: {} 2965 | 2966 | detect-newline@3.1.0: {} 2967 | 2968 | diff-sequences@29.6.3: {} 2969 | 2970 | diff@4.0.2: {} 2971 | 2972 | dir-glob@3.0.1: 2973 | dependencies: 2974 | path-type: 4.0.0 2975 | 2976 | dotenv@16.5.0: {} 2977 | 2978 | dunder-proto@1.0.1: 2979 | dependencies: 2980 | call-bind-apply-helpers: 1.0.2 2981 | es-errors: 1.3.0 2982 | gopd: 1.2.0 2983 | 2984 | ee-first@1.1.1: {} 2985 | 2986 | ejs@3.1.10: 2987 | dependencies: 2988 | jake: 10.9.2 2989 | 2990 | electron-to-chromium@1.5.82: {} 2991 | 2992 | emittery@0.13.1: {} 2993 | 2994 | emoji-regex@8.0.0: {} 2995 | 2996 | encodeurl@1.0.2: {} 2997 | 2998 | encodeurl@2.0.0: {} 2999 | 3000 | enquirer@2.4.1: 3001 | dependencies: 3002 | ansi-colors: 4.1.3 3003 | strip-ansi: 6.0.1 3004 | 3005 | error-ex@1.3.2: 3006 | dependencies: 3007 | is-arrayish: 0.2.1 3008 | 3009 | es-define-property@1.0.1: {} 3010 | 3011 | es-errors@1.3.0: {} 3012 | 3013 | es-object-atoms@1.1.1: 3014 | dependencies: 3015 | es-errors: 1.3.0 3016 | 3017 | escalade@3.2.0: {} 3018 | 3019 | escape-html@1.0.3: {} 3020 | 3021 | escape-string-regexp@2.0.0: {} 3022 | 3023 | esprima@4.0.1: {} 3024 | 3025 | etag@1.8.1: {} 3026 | 3027 | eventsource-parser@3.0.0: {} 3028 | 3029 | eventsource@3.0.2: 3030 | dependencies: 3031 | eventsource-parser: 3.0.0 3032 | 3033 | execa@5.1.1: 3034 | dependencies: 3035 | cross-spawn: 7.0.6 3036 | get-stream: 6.0.1 3037 | human-signals: 2.1.0 3038 | is-stream: 2.0.1 3039 | merge-stream: 2.0.0 3040 | npm-run-path: 4.0.1 3041 | onetime: 5.1.2 3042 | signal-exit: 3.0.7 3043 | strip-final-newline: 2.0.0 3044 | 3045 | exit@0.1.2: {} 3046 | 3047 | expect@29.7.0: 3048 | dependencies: 3049 | '@jest/expect-utils': 29.7.0 3050 | jest-get-type: 29.6.3 3051 | jest-matcher-utils: 29.7.0 3052 | jest-message-util: 29.7.0 3053 | jest-util: 29.7.0 3054 | 3055 | express-rate-limit@7.5.0(express@5.0.1): 3056 | dependencies: 3057 | express: 5.0.1 3058 | 3059 | express@5.0.1: 3060 | dependencies: 3061 | accepts: 2.0.0 3062 | body-parser: 2.1.0 3063 | content-disposition: 1.0.0 3064 | content-type: 1.0.5 3065 | cookie: 0.7.1 3066 | cookie-signature: 1.2.2 3067 | debug: 4.3.6 3068 | depd: 2.0.0 3069 | encodeurl: 2.0.0 3070 | escape-html: 1.0.3 3071 | etag: 1.8.1 3072 | finalhandler: 2.0.0 3073 | fresh: 2.0.0 3074 | http-errors: 2.0.0 3075 | merge-descriptors: 2.0.0 3076 | methods: 1.1.2 3077 | mime-types: 3.0.0 3078 | on-finished: 2.4.1 3079 | once: 1.4.0 3080 | parseurl: 1.3.3 3081 | proxy-addr: 2.0.7 3082 | qs: 6.13.0 3083 | range-parser: 1.2.1 3084 | router: 2.1.0 3085 | safe-buffer: 5.2.1 3086 | send: 1.1.0 3087 | serve-static: 2.1.0 3088 | setprototypeof: 1.2.0 3089 | statuses: 2.0.1 3090 | type-is: 2.0.0 3091 | utils-merge: 1.0.1 3092 | vary: 1.1.2 3093 | transitivePeerDependencies: 3094 | - supports-color 3095 | 3096 | extendable-error@0.1.7: {} 3097 | 3098 | external-editor@3.1.0: 3099 | dependencies: 3100 | chardet: 0.7.0 3101 | iconv-lite: 0.4.24 3102 | tmp: 0.0.33 3103 | 3104 | fast-deep-equal@3.1.3: {} 3105 | 3106 | fast-glob@3.3.3: 3107 | dependencies: 3108 | '@nodelib/fs.stat': 2.0.5 3109 | '@nodelib/fs.walk': 1.2.8 3110 | glob-parent: 5.1.2 3111 | merge2: 1.4.1 3112 | micromatch: 4.0.8 3113 | 3114 | fast-json-stable-stringify@2.1.0: {} 3115 | 3116 | fast-uri@3.0.6: {} 3117 | 3118 | fastq@1.18.0: 3119 | dependencies: 3120 | reusify: 1.0.4 3121 | 3122 | fb-watchman@2.0.2: 3123 | dependencies: 3124 | bser: 2.1.1 3125 | 3126 | fetch-blob@3.2.0: 3127 | dependencies: 3128 | node-domexception: 1.0.0 3129 | web-streams-polyfill: 3.3.3 3130 | 3131 | filelist@1.0.4: 3132 | dependencies: 3133 | minimatch: 5.1.6 3134 | 3135 | fill-range@7.1.1: 3136 | dependencies: 3137 | to-regex-range: 5.0.1 3138 | 3139 | finalhandler@2.0.0: 3140 | dependencies: 3141 | debug: 2.6.9 3142 | encodeurl: 1.0.2 3143 | escape-html: 1.0.3 3144 | on-finished: 2.4.1 3145 | parseurl: 1.3.3 3146 | statuses: 2.0.1 3147 | unpipe: 1.0.0 3148 | transitivePeerDependencies: 3149 | - supports-color 3150 | 3151 | find-up@4.1.0: 3152 | dependencies: 3153 | locate-path: 5.0.0 3154 | path-exists: 4.0.0 3155 | 3156 | formdata-polyfill@4.0.10: 3157 | dependencies: 3158 | fetch-blob: 3.2.0 3159 | 3160 | forwarded@0.2.0: {} 3161 | 3162 | fresh@0.5.2: {} 3163 | 3164 | fresh@2.0.0: {} 3165 | 3166 | fs-extra@7.0.1: 3167 | dependencies: 3168 | graceful-fs: 4.2.11 3169 | jsonfile: 4.0.0 3170 | universalify: 0.1.2 3171 | 3172 | fs-extra@8.1.0: 3173 | dependencies: 3174 | graceful-fs: 4.2.11 3175 | jsonfile: 4.0.0 3176 | universalify: 0.1.2 3177 | 3178 | fs.realpath@1.0.0: {} 3179 | 3180 | fsevents@2.3.3: 3181 | optional: true 3182 | 3183 | function-bind@1.1.2: {} 3184 | 3185 | gensync@1.0.0-beta.2: {} 3186 | 3187 | get-caller-file@2.0.5: {} 3188 | 3189 | get-intrinsic@1.3.0: 3190 | dependencies: 3191 | call-bind-apply-helpers: 1.0.2 3192 | es-define-property: 1.0.1 3193 | es-errors: 1.3.0 3194 | es-object-atoms: 1.1.1 3195 | function-bind: 1.1.2 3196 | get-proto: 1.0.1 3197 | gopd: 1.2.0 3198 | has-symbols: 1.1.0 3199 | hasown: 2.0.2 3200 | math-intrinsics: 1.1.0 3201 | 3202 | get-package-type@0.1.0: {} 3203 | 3204 | get-proto@1.0.1: 3205 | dependencies: 3206 | dunder-proto: 1.0.1 3207 | es-object-atoms: 1.1.1 3208 | 3209 | get-stream@6.0.1: {} 3210 | 3211 | glob-parent@5.1.2: 3212 | dependencies: 3213 | is-glob: 4.0.3 3214 | 3215 | glob@7.2.3: 3216 | dependencies: 3217 | fs.realpath: 1.0.0 3218 | inflight: 1.0.6 3219 | inherits: 2.0.4 3220 | minimatch: 3.1.2 3221 | once: 1.4.0 3222 | path-is-absolute: 1.0.1 3223 | 3224 | globals@11.12.0: {} 3225 | 3226 | globby@11.1.0: 3227 | dependencies: 3228 | array-union: 2.1.0 3229 | dir-glob: 3.0.1 3230 | fast-glob: 3.3.3 3231 | ignore: 5.3.2 3232 | merge2: 1.4.1 3233 | slash: 3.0.0 3234 | 3235 | gopd@1.2.0: {} 3236 | 3237 | graceful-fs@4.2.11: {} 3238 | 3239 | has-flag@4.0.0: {} 3240 | 3241 | has-symbols@1.1.0: {} 3242 | 3243 | hasown@2.0.2: 3244 | dependencies: 3245 | function-bind: 1.1.2 3246 | 3247 | html-escaper@2.0.2: {} 3248 | 3249 | http-errors@2.0.0: 3250 | dependencies: 3251 | depd: 2.0.0 3252 | inherits: 2.0.4 3253 | setprototypeof: 1.2.0 3254 | statuses: 2.0.1 3255 | toidentifier: 1.0.1 3256 | 3257 | human-id@4.1.1: {} 3258 | 3259 | human-signals@2.1.0: {} 3260 | 3261 | iconv-lite@0.4.24: 3262 | dependencies: 3263 | safer-buffer: 2.1.2 3264 | 3265 | iconv-lite@0.5.2: 3266 | dependencies: 3267 | safer-buffer: 2.1.2 3268 | 3269 | iconv-lite@0.6.3: 3270 | dependencies: 3271 | safer-buffer: 2.1.2 3272 | 3273 | ignore@5.3.2: {} 3274 | 3275 | import-local@3.2.0: 3276 | dependencies: 3277 | pkg-dir: 4.2.0 3278 | resolve-cwd: 3.0.0 3279 | 3280 | imurmurhash@0.1.4: {} 3281 | 3282 | inflight@1.0.6: 3283 | dependencies: 3284 | once: 1.4.0 3285 | wrappy: 1.0.2 3286 | 3287 | inherits@2.0.4: {} 3288 | 3289 | ipaddr.js@1.9.1: {} 3290 | 3291 | is-arrayish@0.2.1: {} 3292 | 3293 | is-core-module@2.16.1: 3294 | dependencies: 3295 | hasown: 2.0.2 3296 | 3297 | is-extglob@2.1.1: {} 3298 | 3299 | is-fullwidth-code-point@3.0.0: {} 3300 | 3301 | is-generator-fn@2.1.0: {} 3302 | 3303 | is-glob@4.0.3: 3304 | dependencies: 3305 | is-extglob: 2.1.1 3306 | 3307 | is-number@7.0.0: {} 3308 | 3309 | is-promise@4.0.0: {} 3310 | 3311 | is-stream@2.0.1: {} 3312 | 3313 | is-subdir@1.2.0: 3314 | dependencies: 3315 | better-path-resolve: 1.0.0 3316 | 3317 | is-windows@1.0.2: {} 3318 | 3319 | isexe@2.0.0: {} 3320 | 3321 | istanbul-lib-coverage@3.2.2: {} 3322 | 3323 | istanbul-lib-instrument@5.2.1: 3324 | dependencies: 3325 | '@babel/core': 7.26.0 3326 | '@babel/parser': 7.26.5 3327 | '@istanbuljs/schema': 0.1.3 3328 | istanbul-lib-coverage: 3.2.2 3329 | semver: 6.3.1 3330 | transitivePeerDependencies: 3331 | - supports-color 3332 | 3333 | istanbul-lib-instrument@6.0.3: 3334 | dependencies: 3335 | '@babel/core': 7.26.0 3336 | '@babel/parser': 7.26.5 3337 | '@istanbuljs/schema': 0.1.3 3338 | istanbul-lib-coverage: 3.2.2 3339 | semver: 7.7.1 3340 | transitivePeerDependencies: 3341 | - supports-color 3342 | 3343 | istanbul-lib-report@3.0.1: 3344 | dependencies: 3345 | istanbul-lib-coverage: 3.2.2 3346 | make-dir: 4.0.0 3347 | supports-color: 7.2.0 3348 | 3349 | istanbul-lib-source-maps@4.0.1: 3350 | dependencies: 3351 | debug: 4.4.0 3352 | istanbul-lib-coverage: 3.2.2 3353 | source-map: 0.6.1 3354 | transitivePeerDependencies: 3355 | - supports-color 3356 | 3357 | istanbul-reports@3.1.7: 3358 | dependencies: 3359 | html-escaper: 2.0.2 3360 | istanbul-lib-report: 3.0.1 3361 | 3362 | jake@10.9.2: 3363 | dependencies: 3364 | async: 3.2.6 3365 | chalk: 4.1.2 3366 | filelist: 1.0.4 3367 | minimatch: 3.1.2 3368 | 3369 | jest-changed-files@29.7.0: 3370 | dependencies: 3371 | execa: 5.1.1 3372 | jest-util: 29.7.0 3373 | p-limit: 3.1.0 3374 | 3375 | jest-circus@29.7.0: 3376 | dependencies: 3377 | '@jest/environment': 29.7.0 3378 | '@jest/expect': 29.7.0 3379 | '@jest/test-result': 29.7.0 3380 | '@jest/types': 29.6.3 3381 | '@types/node': 22.15.21 3382 | chalk: 4.1.2 3383 | co: 4.6.0 3384 | dedent: 1.5.3 3385 | is-generator-fn: 2.1.0 3386 | jest-each: 29.7.0 3387 | jest-matcher-utils: 29.7.0 3388 | jest-message-util: 29.7.0 3389 | jest-runtime: 29.7.0 3390 | jest-snapshot: 29.7.0 3391 | jest-util: 29.7.0 3392 | p-limit: 3.1.0 3393 | pretty-format: 29.7.0 3394 | pure-rand: 6.1.0 3395 | slash: 3.0.0 3396 | stack-utils: 2.0.6 3397 | transitivePeerDependencies: 3398 | - babel-plugin-macros 3399 | - supports-color 3400 | 3401 | jest-cli@29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): 3402 | dependencies: 3403 | '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 3404 | '@jest/test-result': 29.7.0 3405 | '@jest/types': 29.6.3 3406 | chalk: 4.1.2 3407 | create-jest: 29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 3408 | exit: 0.1.2 3409 | import-local: 3.2.0 3410 | jest-config: 29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 3411 | jest-util: 29.7.0 3412 | jest-validate: 29.7.0 3413 | yargs: 17.7.2 3414 | transitivePeerDependencies: 3415 | - '@types/node' 3416 | - babel-plugin-macros 3417 | - supports-color 3418 | - ts-node 3419 | 3420 | jest-config@29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): 3421 | dependencies: 3422 | '@babel/core': 7.26.0 3423 | '@jest/test-sequencer': 29.7.0 3424 | '@jest/types': 29.6.3 3425 | babel-jest: 29.7.0(@babel/core@7.26.0) 3426 | chalk: 4.1.2 3427 | ci-info: 3.9.0 3428 | deepmerge: 4.3.1 3429 | glob: 7.2.3 3430 | graceful-fs: 4.2.11 3431 | jest-circus: 29.7.0 3432 | jest-environment-node: 29.7.0 3433 | jest-get-type: 29.6.3 3434 | jest-regex-util: 29.6.3 3435 | jest-resolve: 29.7.0 3436 | jest-runner: 29.7.0 3437 | jest-util: 29.7.0 3438 | jest-validate: 29.7.0 3439 | micromatch: 4.0.8 3440 | parse-json: 5.2.0 3441 | pretty-format: 29.7.0 3442 | slash: 3.0.0 3443 | strip-json-comments: 3.1.1 3444 | optionalDependencies: 3445 | '@types/node': 22.15.21 3446 | ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) 3447 | transitivePeerDependencies: 3448 | - babel-plugin-macros 3449 | - supports-color 3450 | 3451 | jest-diff@29.7.0: 3452 | dependencies: 3453 | chalk: 4.1.2 3454 | diff-sequences: 29.6.3 3455 | jest-get-type: 29.6.3 3456 | pretty-format: 29.7.0 3457 | 3458 | jest-docblock@29.7.0: 3459 | dependencies: 3460 | detect-newline: 3.1.0 3461 | 3462 | jest-each@29.7.0: 3463 | dependencies: 3464 | '@jest/types': 29.6.3 3465 | chalk: 4.1.2 3466 | jest-get-type: 29.6.3 3467 | jest-util: 29.7.0 3468 | pretty-format: 29.7.0 3469 | 3470 | jest-environment-node@29.7.0: 3471 | dependencies: 3472 | '@jest/environment': 29.7.0 3473 | '@jest/fake-timers': 29.7.0 3474 | '@jest/types': 29.6.3 3475 | '@types/node': 22.15.21 3476 | jest-mock: 29.7.0 3477 | jest-util: 29.7.0 3478 | 3479 | jest-get-type@29.6.3: {} 3480 | 3481 | jest-haste-map@29.7.0: 3482 | dependencies: 3483 | '@jest/types': 29.6.3 3484 | '@types/graceful-fs': 4.1.9 3485 | '@types/node': 22.15.21 3486 | anymatch: 3.1.3 3487 | fb-watchman: 2.0.2 3488 | graceful-fs: 4.2.11 3489 | jest-regex-util: 29.6.3 3490 | jest-util: 29.7.0 3491 | jest-worker: 29.7.0 3492 | micromatch: 4.0.8 3493 | walker: 1.0.8 3494 | optionalDependencies: 3495 | fsevents: 2.3.3 3496 | 3497 | jest-leak-detector@29.7.0: 3498 | dependencies: 3499 | jest-get-type: 29.6.3 3500 | pretty-format: 29.7.0 3501 | 3502 | jest-matcher-utils@29.7.0: 3503 | dependencies: 3504 | chalk: 4.1.2 3505 | jest-diff: 29.7.0 3506 | jest-get-type: 29.6.3 3507 | pretty-format: 29.7.0 3508 | 3509 | jest-message-util@29.7.0: 3510 | dependencies: 3511 | '@babel/code-frame': 7.26.2 3512 | '@jest/types': 29.6.3 3513 | '@types/stack-utils': 2.0.3 3514 | chalk: 4.1.2 3515 | graceful-fs: 4.2.11 3516 | micromatch: 4.0.8 3517 | pretty-format: 29.7.0 3518 | slash: 3.0.0 3519 | stack-utils: 2.0.6 3520 | 3521 | jest-mock@29.7.0: 3522 | dependencies: 3523 | '@jest/types': 29.6.3 3524 | '@types/node': 22.15.21 3525 | jest-util: 29.7.0 3526 | 3527 | jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): 3528 | optionalDependencies: 3529 | jest-resolve: 29.7.0 3530 | 3531 | jest-regex-util@29.6.3: {} 3532 | 3533 | jest-resolve-dependencies@29.7.0: 3534 | dependencies: 3535 | jest-regex-util: 29.6.3 3536 | jest-snapshot: 29.7.0 3537 | transitivePeerDependencies: 3538 | - supports-color 3539 | 3540 | jest-resolve@29.7.0: 3541 | dependencies: 3542 | chalk: 4.1.2 3543 | graceful-fs: 4.2.11 3544 | jest-haste-map: 29.7.0 3545 | jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) 3546 | jest-util: 29.7.0 3547 | jest-validate: 29.7.0 3548 | resolve: 1.22.10 3549 | resolve.exports: 2.0.3 3550 | slash: 3.0.0 3551 | 3552 | jest-runner@29.7.0: 3553 | dependencies: 3554 | '@jest/console': 29.7.0 3555 | '@jest/environment': 29.7.0 3556 | '@jest/test-result': 29.7.0 3557 | '@jest/transform': 29.7.0 3558 | '@jest/types': 29.6.3 3559 | '@types/node': 22.15.21 3560 | chalk: 4.1.2 3561 | emittery: 0.13.1 3562 | graceful-fs: 4.2.11 3563 | jest-docblock: 29.7.0 3564 | jest-environment-node: 29.7.0 3565 | jest-haste-map: 29.7.0 3566 | jest-leak-detector: 29.7.0 3567 | jest-message-util: 29.7.0 3568 | jest-resolve: 29.7.0 3569 | jest-runtime: 29.7.0 3570 | jest-util: 29.7.0 3571 | jest-watcher: 29.7.0 3572 | jest-worker: 29.7.0 3573 | p-limit: 3.1.0 3574 | source-map-support: 0.5.13 3575 | transitivePeerDependencies: 3576 | - supports-color 3577 | 3578 | jest-runtime@29.7.0: 3579 | dependencies: 3580 | '@jest/environment': 29.7.0 3581 | '@jest/fake-timers': 29.7.0 3582 | '@jest/globals': 29.7.0 3583 | '@jest/source-map': 29.6.3 3584 | '@jest/test-result': 29.7.0 3585 | '@jest/transform': 29.7.0 3586 | '@jest/types': 29.6.3 3587 | '@types/node': 22.15.21 3588 | chalk: 4.1.2 3589 | cjs-module-lexer: 1.4.1 3590 | collect-v8-coverage: 1.0.2 3591 | glob: 7.2.3 3592 | graceful-fs: 4.2.11 3593 | jest-haste-map: 29.7.0 3594 | jest-message-util: 29.7.0 3595 | jest-mock: 29.7.0 3596 | jest-regex-util: 29.6.3 3597 | jest-resolve: 29.7.0 3598 | jest-snapshot: 29.7.0 3599 | jest-util: 29.7.0 3600 | slash: 3.0.0 3601 | strip-bom: 4.0.0 3602 | transitivePeerDependencies: 3603 | - supports-color 3604 | 3605 | jest-snapshot@29.7.0: 3606 | dependencies: 3607 | '@babel/core': 7.26.0 3608 | '@babel/generator': 7.26.5 3609 | '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) 3610 | '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) 3611 | '@babel/types': 7.26.5 3612 | '@jest/expect-utils': 29.7.0 3613 | '@jest/transform': 29.7.0 3614 | '@jest/types': 29.6.3 3615 | babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) 3616 | chalk: 4.1.2 3617 | expect: 29.7.0 3618 | graceful-fs: 4.2.11 3619 | jest-diff: 29.7.0 3620 | jest-get-type: 29.6.3 3621 | jest-matcher-utils: 29.7.0 3622 | jest-message-util: 29.7.0 3623 | jest-util: 29.7.0 3624 | natural-compare: 1.4.0 3625 | pretty-format: 29.7.0 3626 | semver: 7.7.1 3627 | transitivePeerDependencies: 3628 | - supports-color 3629 | 3630 | jest-util@29.7.0: 3631 | dependencies: 3632 | '@jest/types': 29.6.3 3633 | '@types/node': 22.15.21 3634 | chalk: 4.1.2 3635 | ci-info: 3.9.0 3636 | graceful-fs: 4.2.11 3637 | picomatch: 2.3.1 3638 | 3639 | jest-validate@29.7.0: 3640 | dependencies: 3641 | '@jest/types': 29.6.3 3642 | camelcase: 6.3.0 3643 | chalk: 4.1.2 3644 | jest-get-type: 29.6.3 3645 | leven: 3.1.0 3646 | pretty-format: 29.7.0 3647 | 3648 | jest-watcher@29.7.0: 3649 | dependencies: 3650 | '@jest/test-result': 29.7.0 3651 | '@jest/types': 29.6.3 3652 | '@types/node': 22.15.21 3653 | ansi-escapes: 4.3.2 3654 | chalk: 4.1.2 3655 | emittery: 0.13.1 3656 | jest-util: 29.7.0 3657 | string-length: 4.0.2 3658 | 3659 | jest-worker@29.7.0: 3660 | dependencies: 3661 | '@types/node': 22.15.21 3662 | jest-util: 29.7.0 3663 | merge-stream: 2.0.0 3664 | supports-color: 8.1.1 3665 | 3666 | jest@29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): 3667 | dependencies: 3668 | '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 3669 | '@jest/types': 29.6.3 3670 | import-local: 3.2.0 3671 | jest-cli: 29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 3672 | transitivePeerDependencies: 3673 | - '@types/node' 3674 | - babel-plugin-macros 3675 | - supports-color 3676 | - ts-node 3677 | 3678 | js-base64@3.7.7: {} 3679 | 3680 | js-tokens@4.0.0: {} 3681 | 3682 | js-yaml@3.14.1: 3683 | dependencies: 3684 | argparse: 1.0.10 3685 | esprima: 4.0.1 3686 | 3687 | jsesc@3.1.0: {} 3688 | 3689 | json-parse-even-better-errors@2.3.1: {} 3690 | 3691 | json-schema-traverse@1.0.0: {} 3692 | 3693 | json5@2.2.3: {} 3694 | 3695 | jsonfile@4.0.0: 3696 | optionalDependencies: 3697 | graceful-fs: 4.2.11 3698 | 3699 | kleur@3.0.3: {} 3700 | 3701 | leven@3.1.0: {} 3702 | 3703 | libsql@0.5.11: 3704 | dependencies: 3705 | '@neon-rs/load': 0.0.4 3706 | detect-libc: 2.0.2 3707 | optionalDependencies: 3708 | '@libsql/darwin-arm64': 0.5.11 3709 | '@libsql/darwin-x64': 0.5.11 3710 | '@libsql/linux-arm-gnueabihf': 0.5.11 3711 | '@libsql/linux-arm-musleabihf': 0.5.11 3712 | '@libsql/linux-arm64-gnu': 0.5.11 3713 | '@libsql/linux-arm64-musl': 0.5.11 3714 | '@libsql/linux-x64-gnu': 0.5.11 3715 | '@libsql/linux-x64-musl': 0.5.11 3716 | '@libsql/win32-x64-msvc': 0.5.11 3717 | 3718 | lines-and-columns@1.2.4: {} 3719 | 3720 | locate-path@5.0.0: 3721 | dependencies: 3722 | p-locate: 4.1.0 3723 | 3724 | lodash.memoize@4.1.2: {} 3725 | 3726 | lodash.startcase@4.4.0: {} 3727 | 3728 | lru-cache@5.1.1: 3729 | dependencies: 3730 | yallist: 3.1.1 3731 | 3732 | make-dir@4.0.0: 3733 | dependencies: 3734 | semver: 7.7.1 3735 | 3736 | make-error@1.3.6: {} 3737 | 3738 | makeerror@1.0.12: 3739 | dependencies: 3740 | tmpl: 1.0.5 3741 | 3742 | math-intrinsics@1.1.0: {} 3743 | 3744 | media-typer@1.1.0: {} 3745 | 3746 | merge-descriptors@2.0.0: {} 3747 | 3748 | merge-stream@2.0.0: {} 3749 | 3750 | merge2@1.4.1: {} 3751 | 3752 | methods@1.1.2: {} 3753 | 3754 | micromatch@4.0.8: 3755 | dependencies: 3756 | braces: 3.0.3 3757 | picomatch: 2.3.1 3758 | 3759 | mime-db@1.52.0: {} 3760 | 3761 | mime-db@1.53.0: {} 3762 | 3763 | mime-types@2.1.35: 3764 | dependencies: 3765 | mime-db: 1.52.0 3766 | 3767 | mime-types@3.0.0: 3768 | dependencies: 3769 | mime-db: 1.53.0 3770 | 3771 | mimic-fn@2.1.0: {} 3772 | 3773 | minimatch@3.1.2: 3774 | dependencies: 3775 | brace-expansion: 1.1.11 3776 | 3777 | minimatch@5.1.6: 3778 | dependencies: 3779 | brace-expansion: 2.0.1 3780 | 3781 | mri@1.2.0: {} 3782 | 3783 | ms@2.0.0: {} 3784 | 3785 | ms@2.1.2: {} 3786 | 3787 | ms@2.1.3: {} 3788 | 3789 | natural-compare@1.4.0: {} 3790 | 3791 | negotiator@1.0.0: {} 3792 | 3793 | node-domexception@1.0.0: {} 3794 | 3795 | node-fetch@3.3.2: 3796 | dependencies: 3797 | data-uri-to-buffer: 4.0.1 3798 | fetch-blob: 3.2.0 3799 | formdata-polyfill: 4.0.10 3800 | 3801 | node-int64@0.4.0: {} 3802 | 3803 | node-releases@2.0.19: {} 3804 | 3805 | normalize-path@3.0.0: {} 3806 | 3807 | npm-run-path@4.0.1: 3808 | dependencies: 3809 | path-key: 3.1.1 3810 | 3811 | object-assign@4.1.1: {} 3812 | 3813 | object-inspect@1.13.4: {} 3814 | 3815 | on-finished@2.4.1: 3816 | dependencies: 3817 | ee-first: 1.1.1 3818 | 3819 | once@1.4.0: 3820 | dependencies: 3821 | wrappy: 1.0.2 3822 | 3823 | onetime@5.1.2: 3824 | dependencies: 3825 | mimic-fn: 2.1.0 3826 | 3827 | os-tmpdir@1.0.2: {} 3828 | 3829 | outdent@0.5.0: {} 3830 | 3831 | p-filter@2.1.0: 3832 | dependencies: 3833 | p-map: 2.1.0 3834 | 3835 | p-limit@2.3.0: 3836 | dependencies: 3837 | p-try: 2.2.0 3838 | 3839 | p-limit@3.1.0: 3840 | dependencies: 3841 | yocto-queue: 0.1.0 3842 | 3843 | p-locate@4.1.0: 3844 | dependencies: 3845 | p-limit: 2.3.0 3846 | 3847 | p-map@2.1.0: {} 3848 | 3849 | p-try@2.2.0: {} 3850 | 3851 | package-manager-detector@0.2.8: {} 3852 | 3853 | parse-json@5.2.0: 3854 | dependencies: 3855 | '@babel/code-frame': 7.26.2 3856 | error-ex: 1.3.2 3857 | json-parse-even-better-errors: 2.3.1 3858 | lines-and-columns: 1.2.4 3859 | 3860 | parseurl@1.3.3: {} 3861 | 3862 | path-exists@4.0.0: {} 3863 | 3864 | path-is-absolute@1.0.1: {} 3865 | 3866 | path-key@3.1.1: {} 3867 | 3868 | path-parse@1.0.7: {} 3869 | 3870 | path-to-regexp@8.2.0: {} 3871 | 3872 | path-type@4.0.0: {} 3873 | 3874 | picocolors@1.1.1: {} 3875 | 3876 | picomatch@2.3.1: {} 3877 | 3878 | pify@4.0.1: {} 3879 | 3880 | pirates@4.0.6: {} 3881 | 3882 | pkce-challenge@5.0.0: {} 3883 | 3884 | pkg-dir@4.2.0: 3885 | dependencies: 3886 | find-up: 4.1.0 3887 | 3888 | prettier@2.8.8: {} 3889 | 3890 | pretty-format@29.7.0: 3891 | dependencies: 3892 | '@jest/schemas': 29.6.3 3893 | ansi-styles: 5.2.0 3894 | react-is: 18.3.1 3895 | 3896 | promise-limit@2.7.0: {} 3897 | 3898 | prompts@2.4.2: 3899 | dependencies: 3900 | kleur: 3.0.3 3901 | sisteransi: 1.0.5 3902 | 3903 | proxy-addr@2.0.7: 3904 | dependencies: 3905 | forwarded: 0.2.0 3906 | ipaddr.js: 1.9.1 3907 | 3908 | pure-rand@6.1.0: {} 3909 | 3910 | qs@6.13.0: 3911 | dependencies: 3912 | side-channel: 1.1.0 3913 | 3914 | qs@6.14.0: 3915 | dependencies: 3916 | side-channel: 1.1.0 3917 | 3918 | queue-microtask@1.2.3: {} 3919 | 3920 | range-parser@1.2.1: {} 3921 | 3922 | raw-body@3.0.0: 3923 | dependencies: 3924 | bytes: 3.1.2 3925 | http-errors: 2.0.0 3926 | iconv-lite: 0.6.3 3927 | unpipe: 1.0.0 3928 | 3929 | react-is@18.3.1: {} 3930 | 3931 | read-yaml-file@1.1.0: 3932 | dependencies: 3933 | graceful-fs: 4.2.11 3934 | js-yaml: 3.14.1 3935 | pify: 4.0.1 3936 | strip-bom: 3.0.0 3937 | 3938 | regenerator-runtime@0.14.1: {} 3939 | 3940 | require-directory@2.1.1: {} 3941 | 3942 | require-from-string@2.0.2: {} 3943 | 3944 | resolve-cwd@3.0.0: 3945 | dependencies: 3946 | resolve-from: 5.0.0 3947 | 3948 | resolve-from@5.0.0: {} 3949 | 3950 | resolve.exports@2.0.3: {} 3951 | 3952 | resolve@1.22.10: 3953 | dependencies: 3954 | is-core-module: 2.16.1 3955 | path-parse: 1.0.7 3956 | supports-preserve-symlinks-flag: 1.0.0 3957 | 3958 | reusify@1.0.4: {} 3959 | 3960 | router@2.1.0: 3961 | dependencies: 3962 | is-promise: 4.0.0 3963 | parseurl: 1.3.3 3964 | path-to-regexp: 8.2.0 3965 | 3966 | run-parallel@1.2.0: 3967 | dependencies: 3968 | queue-microtask: 1.2.3 3969 | 3970 | safe-buffer@5.2.1: {} 3971 | 3972 | safer-buffer@2.1.2: {} 3973 | 3974 | semver@6.3.1: {} 3975 | 3976 | semver@7.7.1: {} 3977 | 3978 | semver@7.7.2: {} 3979 | 3980 | send@1.1.0: 3981 | dependencies: 3982 | debug: 4.4.0 3983 | destroy: 1.2.0 3984 | encodeurl: 2.0.0 3985 | escape-html: 1.0.3 3986 | etag: 1.8.1 3987 | fresh: 0.5.2 3988 | http-errors: 2.0.0 3989 | mime-types: 2.1.35 3990 | ms: 2.1.3 3991 | on-finished: 2.4.1 3992 | range-parser: 1.2.1 3993 | statuses: 2.0.1 3994 | transitivePeerDependencies: 3995 | - supports-color 3996 | 3997 | serve-static@2.1.0: 3998 | dependencies: 3999 | encodeurl: 2.0.0 4000 | escape-html: 1.0.3 4001 | parseurl: 1.3.3 4002 | send: 1.1.0 4003 | transitivePeerDependencies: 4004 | - supports-color 4005 | 4006 | setprototypeof@1.2.0: {} 4007 | 4008 | shebang-command@2.0.0: 4009 | dependencies: 4010 | shebang-regex: 3.0.0 4011 | 4012 | shebang-regex@3.0.0: {} 4013 | 4014 | side-channel-list@1.0.0: 4015 | dependencies: 4016 | es-errors: 1.3.0 4017 | object-inspect: 1.13.4 4018 | 4019 | side-channel-map@1.0.1: 4020 | dependencies: 4021 | call-bound: 1.0.3 4022 | es-errors: 1.3.0 4023 | get-intrinsic: 1.3.0 4024 | object-inspect: 1.13.4 4025 | 4026 | side-channel-weakmap@1.0.2: 4027 | dependencies: 4028 | call-bound: 1.0.3 4029 | es-errors: 1.3.0 4030 | get-intrinsic: 1.3.0 4031 | object-inspect: 1.13.4 4032 | side-channel-map: 1.0.1 4033 | 4034 | side-channel@1.1.0: 4035 | dependencies: 4036 | es-errors: 1.3.0 4037 | object-inspect: 1.13.4 4038 | side-channel-list: 1.0.0 4039 | side-channel-map: 1.0.1 4040 | side-channel-weakmap: 1.0.2 4041 | 4042 | signal-exit@3.0.7: {} 4043 | 4044 | signal-exit@4.1.0: {} 4045 | 4046 | sisteransi@1.0.5: {} 4047 | 4048 | slash@3.0.0: {} 4049 | 4050 | source-map-support@0.5.13: 4051 | dependencies: 4052 | buffer-from: 1.1.2 4053 | source-map: 0.6.1 4054 | 4055 | source-map@0.6.1: {} 4056 | 4057 | spawndamnit@3.0.1: 4058 | dependencies: 4059 | cross-spawn: 7.0.6 4060 | signal-exit: 4.1.0 4061 | 4062 | sprintf-js@1.0.3: {} 4063 | 4064 | stack-utils@2.0.6: 4065 | dependencies: 4066 | escape-string-regexp: 2.0.0 4067 | 4068 | statuses@2.0.1: {} 4069 | 4070 | string-length@4.0.2: 4071 | dependencies: 4072 | char-regex: 1.0.2 4073 | strip-ansi: 6.0.1 4074 | 4075 | string-width@4.2.3: 4076 | dependencies: 4077 | emoji-regex: 8.0.0 4078 | is-fullwidth-code-point: 3.0.0 4079 | strip-ansi: 6.0.1 4080 | 4081 | strip-ansi@6.0.1: 4082 | dependencies: 4083 | ansi-regex: 5.0.1 4084 | 4085 | strip-bom@3.0.0: {} 4086 | 4087 | strip-bom@4.0.0: {} 4088 | 4089 | strip-final-newline@2.0.0: {} 4090 | 4091 | strip-json-comments@3.1.1: {} 4092 | 4093 | supports-color@7.2.0: 4094 | dependencies: 4095 | has-flag: 4.0.0 4096 | 4097 | supports-color@8.1.1: 4098 | dependencies: 4099 | has-flag: 4.0.0 4100 | 4101 | supports-preserve-symlinks-flag@1.0.0: {} 4102 | 4103 | term-size@2.2.1: {} 4104 | 4105 | test-exclude@6.0.0: 4106 | dependencies: 4107 | '@istanbuljs/schema': 0.1.3 4108 | glob: 7.2.3 4109 | minimatch: 3.1.2 4110 | 4111 | tmp@0.0.33: 4112 | dependencies: 4113 | os-tmpdir: 1.0.2 4114 | 4115 | tmpl@1.0.5: {} 4116 | 4117 | to-regex-range@5.0.1: 4118 | dependencies: 4119 | is-number: 7.0.0 4120 | 4121 | toidentifier@1.0.1: {} 4122 | 4123 | ts-jest@29.3.4(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)))(typescript@5.8.3): 4124 | dependencies: 4125 | bs-logger: 0.2.6 4126 | ejs: 3.1.10 4127 | fast-json-stable-stringify: 2.1.0 4128 | jest: 29.7.0(@types/node@22.15.21)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) 4129 | jest-util: 29.7.0 4130 | json5: 2.2.3 4131 | lodash.memoize: 4.1.2 4132 | make-error: 1.3.6 4133 | semver: 7.7.2 4134 | type-fest: 4.41.0 4135 | typescript: 5.8.3 4136 | yargs-parser: 21.1.1 4137 | optionalDependencies: 4138 | '@babel/core': 7.26.0 4139 | '@jest/transform': 29.7.0 4140 | '@jest/types': 29.6.3 4141 | babel-jest: 29.7.0(@babel/core@7.26.0) 4142 | 4143 | ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3): 4144 | dependencies: 4145 | '@cspotcode/source-map-support': 0.8.1 4146 | '@tsconfig/node10': 1.0.11 4147 | '@tsconfig/node12': 1.0.11 4148 | '@tsconfig/node14': 1.0.3 4149 | '@tsconfig/node16': 1.0.4 4150 | '@types/node': 22.15.21 4151 | acorn: 8.14.0 4152 | acorn-walk: 8.3.4 4153 | arg: 4.1.3 4154 | create-require: 1.1.1 4155 | diff: 4.0.2 4156 | make-error: 1.3.6 4157 | typescript: 5.8.3 4158 | v8-compile-cache-lib: 3.0.1 4159 | yn: 3.1.1 4160 | 4161 | type-detect@4.0.8: {} 4162 | 4163 | type-fest@0.21.3: {} 4164 | 4165 | type-fest@4.41.0: {} 4166 | 4167 | type-is@2.0.0: 4168 | dependencies: 4169 | content-type: 1.0.5 4170 | media-typer: 1.1.0 4171 | mime-types: 3.0.0 4172 | 4173 | typescript@5.8.3: {} 4174 | 4175 | undici-types@6.21.0: {} 4176 | 4177 | universalify@0.1.2: {} 4178 | 4179 | unpipe@1.0.0: {} 4180 | 4181 | update-browserslist-db@1.1.2(browserslist@4.24.4): 4182 | dependencies: 4183 | browserslist: 4.24.4 4184 | escalade: 3.2.0 4185 | picocolors: 1.1.1 4186 | 4187 | utils-merge@1.0.1: {} 4188 | 4189 | v8-compile-cache-lib@3.0.1: {} 4190 | 4191 | v8-to-istanbul@9.3.0: 4192 | dependencies: 4193 | '@jridgewell/trace-mapping': 0.3.25 4194 | '@types/istanbul-lib-coverage': 2.0.6 4195 | convert-source-map: 2.0.0 4196 | 4197 | vary@1.1.2: {} 4198 | 4199 | walker@1.0.8: 4200 | dependencies: 4201 | makeerror: 1.0.12 4202 | 4203 | web-streams-polyfill@3.3.3: {} 4204 | 4205 | which@2.0.2: 4206 | dependencies: 4207 | isexe: 2.0.0 4208 | 4209 | wrap-ansi@7.0.0: 4210 | dependencies: 4211 | ansi-styles: 4.3.0 4212 | string-width: 4.2.3 4213 | strip-ansi: 6.0.1 4214 | 4215 | wrappy@1.0.2: {} 4216 | 4217 | write-file-atomic@4.0.2: 4218 | dependencies: 4219 | imurmurhash: 0.1.4 4220 | signal-exit: 3.0.7 4221 | 4222 | ws@8.18.0: {} 4223 | 4224 | y18n@5.0.8: {} 4225 | 4226 | yallist@3.1.1: {} 4227 | 4228 | yargs-parser@21.1.1: {} 4229 | 4230 | yargs@17.7.2: 4231 | dependencies: 4232 | cliui: 8.0.1 4233 | escalade: 3.2.0 4234 | get-caller-file: 2.0.5 4235 | require-directory: 2.1.1 4236 | string-width: 4.2.3 4237 | y18n: 5.0.8 4238 | yargs-parser: 21.1.1 4239 | 4240 | yn@3.1.1: {} 4241 | 4242 | yocto-queue@0.1.0: {} 4243 | 4244 | zod-to-json-schema@3.24.1(zod@3.24.1): 4245 | dependencies: 4246 | zod: 3.24.1 4247 | 4248 | zod@3.24.1: {} 4249 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ] 6 | } -------------------------------------------------------------------------------- /src/db/client.ts: -------------------------------------------------------------------------------- 1 | import { createClient } from '@libsql/client'; 2 | import { Entity, Relation, SearchResult } from '../types/index.js'; 3 | 4 | // Types for configuration 5 | interface DatabaseConfig { 6 | url: string; 7 | authToken?: string; 8 | } 9 | 10 | export class DatabaseManager { 11 | private static instance: DatabaseManager; 12 | private client; 13 | 14 | private constructor(config: DatabaseConfig) { 15 | if (!config.url) { 16 | throw new Error('Database URL is required'); 17 | } 18 | this.client = createClient({ 19 | url: config.url, 20 | authToken: config.authToken, 21 | }); 22 | } 23 | 24 | public static async get_instance( 25 | config: DatabaseConfig, 26 | ): Promise { 27 | if (!DatabaseManager.instance) { 28 | DatabaseManager.instance = new DatabaseManager(config); 29 | await DatabaseManager.instance.initialize(); 30 | } 31 | return DatabaseManager.instance; 32 | } 33 | 34 | // Convert array to vector string representation with validation 35 | private array_to_vector_string( 36 | numbers: number[] | undefined, 37 | ): string { 38 | // If no embedding provided, create a default zero vector 39 | if (!numbers || !Array.isArray(numbers)) { 40 | return '[0.0, 0.0, 0.0, 0.0]'; 41 | } 42 | 43 | // Validate vector dimensions match schema (4 dimensions for testing) 44 | if (numbers.length !== 4) { 45 | throw new Error( 46 | `Vector must have exactly 4 dimensions, got ${numbers.length}. Please provide a 4D vector or omit for default zero vector.`, 47 | ); 48 | } 49 | 50 | // Validate all elements are numbers and convert NaN/Infinity to 0 51 | const sanitized_numbers = numbers.map((n) => { 52 | if (typeof n !== 'number' || isNaN(n) || !isFinite(n)) { 53 | console.warn( 54 | `Invalid vector value detected, using 0.0 instead of: ${n}`, 55 | ); 56 | return 0.0; 57 | } 58 | return n; 59 | }); 60 | 61 | return `[${sanitized_numbers.join(', ')}]`; 62 | } 63 | 64 | // Extract vector from binary format 65 | private async extract_vector( 66 | embedding: Uint8Array, 67 | ): Promise { 68 | const result = await this.client.execute({ 69 | sql: 'SELECT vector_extract(?) as vec', 70 | args: [embedding], 71 | }); 72 | const vecStr = result.rows[0].vec as string; 73 | return JSON.parse(vecStr); 74 | } 75 | 76 | // Entity operations 77 | async create_entities( 78 | entities: Array<{ 79 | name: string; 80 | entityType: string; 81 | observations: string[]; 82 | embedding?: number[]; 83 | }>, 84 | ): Promise { 85 | try { 86 | for (const entity of entities) { 87 | // Validate entity name 88 | if ( 89 | !entity.name || 90 | typeof entity.name !== 'string' || 91 | entity.name.trim() === '' 92 | ) { 93 | throw new Error('Entity name must be a non-empty string'); 94 | } 95 | 96 | // Validate entity type 97 | if ( 98 | !entity.entityType || 99 | typeof entity.entityType !== 'string' || 100 | entity.entityType.trim() === '' 101 | ) { 102 | throw new Error( 103 | `Invalid entity type for entity "${entity.name}"`, 104 | ); 105 | } 106 | 107 | // Validate observations 108 | if ( 109 | !Array.isArray(entity.observations) || 110 | entity.observations.length === 0 111 | ) { 112 | throw new Error( 113 | `Entity "${entity.name}" must have at least one observation`, 114 | ); 115 | } 116 | 117 | if ( 118 | !entity.observations.every( 119 | (obs) => typeof obs === 'string' && obs.trim() !== '', 120 | ) 121 | ) { 122 | throw new Error( 123 | `Entity "${entity.name}" has invalid observations. All observations must be non-empty strings`, 124 | ); 125 | } 126 | 127 | // Start a transaction 128 | const txn = await this.client.transaction('write'); 129 | 130 | try { 131 | const vector_string = this.array_to_vector_string( 132 | entity.embedding, 133 | ); 134 | 135 | // First try to update 136 | const result = await txn.execute({ 137 | sql: 'UPDATE entities SET entity_type = ?, embedding = vector32(?) WHERE name = ?', 138 | args: [entity.entityType, vector_string, entity.name], 139 | }); 140 | 141 | // If no rows affected, do insert 142 | if (result.rowsAffected === 0) { 143 | await txn.execute({ 144 | sql: 'INSERT INTO entities (name, entity_type, embedding) VALUES (?, ?, vector32(?))', 145 | args: [entity.name, entity.entityType, vector_string], 146 | }); 147 | } 148 | 149 | // Clear old observations 150 | await txn.execute({ 151 | sql: 'DELETE FROM observations WHERE entity_name = ?', 152 | args: [entity.name], 153 | }); 154 | 155 | // Add new observations 156 | for (const observation of entity.observations) { 157 | await txn.execute({ 158 | sql: 'INSERT INTO observations (entity_name, content) VALUES (?, ?)', 159 | args: [entity.name, observation], 160 | }); 161 | } 162 | 163 | await txn.commit(); 164 | } catch (error) { 165 | await txn.rollback(); 166 | throw error; 167 | } 168 | } 169 | } catch (error) { 170 | // Wrap all errors with context 171 | throw new Error( 172 | `Entity operation failed: ${ 173 | error instanceof Error ? error.message : String(error) 174 | }`, 175 | ); 176 | } 177 | } 178 | 179 | async search_similar( 180 | embedding: number[], 181 | limit: number = 5, 182 | ): Promise { 183 | try { 184 | // Validate input vector 185 | if (!Array.isArray(embedding)) { 186 | throw new Error('Search embedding must be an array'); 187 | } 188 | 189 | const vector_string = this.array_to_vector_string(embedding); 190 | 191 | // Use vector_top_k to find similar entities, excluding zero vectors 192 | const results = await this.client.execute({ 193 | sql: ` 194 | SELECT e.name, e.entity_type, e.embedding, 195 | vector_distance_cos(e.embedding, vector32(?)) as distance 196 | FROM entities e 197 | WHERE e.embedding IS NOT NULL 198 | AND e.embedding != vector32('[0.0, 0.0, 0.0, 0.0]') 199 | ORDER BY distance ASC 200 | LIMIT ? 201 | `, 202 | args: [vector_string, limit], 203 | }); 204 | 205 | // Get observations for each entity 206 | const search_results: SearchResult[] = []; 207 | for (const row of results.rows) { 208 | try { 209 | const observations = await this.client.execute({ 210 | sql: 'SELECT content FROM observations WHERE entity_name = ?', 211 | args: [row.name], 212 | }); 213 | 214 | const entity_embedding = await this.extract_vector( 215 | row.embedding as Uint8Array, 216 | ); 217 | 218 | search_results.push({ 219 | entity: { 220 | name: row.name as string, 221 | entityType: row.entity_type as string, 222 | observations: observations.rows.map( 223 | (obs) => obs.content as string, 224 | ), 225 | embedding: entity_embedding, 226 | }, 227 | distance: row.distance as number, 228 | }); 229 | } catch (error) { 230 | console.warn( 231 | `Failed to process search result for entity "${ 232 | row.name 233 | }": ${ 234 | error instanceof Error ? error.message : String(error) 235 | }`, 236 | ); 237 | // Continue processing other results 238 | continue; 239 | } 240 | } 241 | 242 | return search_results; 243 | } catch (error) { 244 | throw new Error( 245 | `Similarity search failed: ${ 246 | error instanceof Error ? error.message : String(error) 247 | }`, 248 | ); 249 | } 250 | } 251 | 252 | async get_entity(name: string): Promise { 253 | const entity_result = await this.client.execute({ 254 | sql: 'SELECT name, entity_type, embedding FROM entities WHERE name = ?', 255 | args: [name], 256 | }); 257 | 258 | if (entity_result.rows.length === 0) { 259 | throw new Error(`Entity not found: ${name}`); 260 | } 261 | 262 | const observations_result = await this.client.execute({ 263 | sql: 'SELECT content FROM observations WHERE entity_name = ?', 264 | args: [name], 265 | }); 266 | 267 | const embedding = entity_result.rows[0].embedding 268 | ? await this.extract_vector( 269 | entity_result.rows[0].embedding as Uint8Array, 270 | ) 271 | : undefined; 272 | 273 | return { 274 | name: entity_result.rows[0].name as string, 275 | entityType: entity_result.rows[0].entity_type as string, 276 | observations: observations_result.rows.map( 277 | (row) => row.content as string, 278 | ), 279 | embedding, 280 | }; 281 | } 282 | 283 | async search_entities(query: string): Promise { 284 | const results = await this.client.execute({ 285 | sql: ` 286 | SELECT DISTINCT e.name, e.entity_type, e.embedding 287 | FROM entities e 288 | LEFT JOIN observations o ON e.name = o.entity_name 289 | WHERE e.name LIKE ? OR e.entity_type LIKE ? OR o.content LIKE ? 290 | `, 291 | args: [`%${query}%`, `%${query}%`, `%${query}%`], 292 | }); 293 | 294 | const entities: Entity[] = []; 295 | for (const row of results.rows) { 296 | const name = row.name as string; 297 | const observations = await this.client.execute({ 298 | sql: 'SELECT content FROM observations WHERE entity_name = ?', 299 | args: [name], 300 | }); 301 | 302 | const embedding = row.embedding 303 | ? await this.extract_vector(row.embedding as Uint8Array) 304 | : undefined; 305 | 306 | entities.push({ 307 | name, 308 | entityType: row.entity_type as string, 309 | observations: observations.rows.map( 310 | (obs) => obs.content as string, 311 | ), 312 | embedding, 313 | }); 314 | } 315 | 316 | return entities; 317 | } 318 | 319 | async get_recent_entities(limit = 10): Promise { 320 | const results = await this.client.execute({ 321 | sql: 'SELECT name, entity_type, embedding FROM entities ORDER BY created_at DESC LIMIT ?', 322 | args: [limit], 323 | }); 324 | 325 | const entities: Entity[] = []; 326 | for (const row of results.rows) { 327 | const name = row.name as string; 328 | const observations = await this.client.execute({ 329 | sql: 'SELECT content FROM observations WHERE entity_name = ?', 330 | args: [name], 331 | }); 332 | 333 | const embedding = row.embedding 334 | ? await this.extract_vector(row.embedding as Uint8Array) 335 | : undefined; 336 | 337 | entities.push({ 338 | name, 339 | entityType: row.entity_type as string, 340 | observations: observations.rows.map( 341 | (obs) => obs.content as string, 342 | ), 343 | embedding, 344 | }); 345 | } 346 | 347 | return entities; 348 | } 349 | 350 | // Relation operations 351 | async create_relations(relations: Relation[]): Promise { 352 | try { 353 | if (relations.length === 0) return; 354 | 355 | // Prepare batch statements for all relations 356 | const batch_statements = relations.map((relation) => ({ 357 | sql: 'INSERT INTO relations (source, target, relation_type) VALUES (?, ?, ?)', 358 | args: [relation.from, relation.to, relation.relationType], 359 | })); 360 | 361 | // Execute all inserts in a single batch transaction 362 | await this.client.batch(batch_statements, 'write'); 363 | } catch (error) { 364 | throw new Error( 365 | `Failed to create relations: ${ 366 | error instanceof Error ? error.message : String(error) 367 | }`, 368 | ); 369 | } 370 | } 371 | 372 | async delete_entity(name: string): Promise { 373 | try { 374 | // Check if entity exists first 375 | const existing = await this.client.execute({ 376 | sql: 'SELECT name FROM entities WHERE name = ?', 377 | args: [name], 378 | }); 379 | 380 | if (existing.rows.length === 0) { 381 | throw new Error(`Entity not found: ${name}`); 382 | } 383 | 384 | // Prepare batch statements for deletion 385 | const batch_statements = [ 386 | { 387 | // Delete associated observations first (due to foreign key) 388 | sql: 'DELETE FROM observations WHERE entity_name = ?', 389 | args: [name], 390 | }, 391 | { 392 | // Delete associated relations (due to foreign key) 393 | sql: 'DELETE FROM relations WHERE source = ? OR target = ?', 394 | args: [name, name], 395 | }, 396 | { 397 | // Delete the entity 398 | sql: 'DELETE FROM entities WHERE name = ?', 399 | args: [name], 400 | }, 401 | ]; 402 | 403 | // Execute all deletions in a single batch transaction 404 | await this.client.batch(batch_statements, 'write'); 405 | } catch (error) { 406 | throw new Error( 407 | `Failed to delete entity "${name}": ${ 408 | error instanceof Error ? error.message : String(error) 409 | }`, 410 | ); 411 | } 412 | } 413 | 414 | async delete_relation( 415 | source: string, 416 | target: string, 417 | type: string, 418 | ): Promise { 419 | try { 420 | const result = await this.client.execute({ 421 | sql: 'DELETE FROM relations WHERE source = ? AND target = ? AND relation_type = ?', 422 | args: [source, target, type], 423 | }); 424 | 425 | if (result.rowsAffected === 0) { 426 | throw new Error( 427 | `Relation not found: ${source} -> ${target} (${type})`, 428 | ); 429 | } 430 | } catch (error) { 431 | throw new Error( 432 | `Failed to delete relation: ${ 433 | error instanceof Error ? error.message : String(error) 434 | }`, 435 | ); 436 | } 437 | } 438 | 439 | async get_relations_for_entities( 440 | entities: Entity[], 441 | ): Promise { 442 | if (entities.length === 0) return []; 443 | 444 | const entity_names = entities.map((e) => e.name); 445 | const placeholders = entity_names.map(() => '?').join(','); 446 | 447 | const results = await this.client.execute({ 448 | sql: ` 449 | SELECT source as from_entity, target as to_entity, relation_type 450 | FROM relations 451 | WHERE source IN (${placeholders}) 452 | OR target IN (${placeholders}) 453 | `, 454 | args: [...entity_names, ...entity_names], 455 | }); 456 | 457 | return results.rows.map((row) => ({ 458 | from: row.from_entity as string, 459 | to: row.to_entity as string, 460 | relationType: row.relation_type as string, 461 | })); 462 | } 463 | 464 | // Graph operations 465 | async read_graph(): Promise<{ 466 | entities: Entity[]; 467 | relations: Relation[]; 468 | }> { 469 | const recent_entities = await this.get_recent_entities(); 470 | const relations = await this.get_relations_for_entities( 471 | recent_entities, 472 | ); 473 | return { entities: recent_entities, relations }; 474 | } 475 | 476 | async search_nodes( 477 | query: string | number[], 478 | ): Promise<{ entities: Entity[]; relations: Relation[] }> { 479 | try { 480 | let entities: Entity[]; 481 | 482 | if (Array.isArray(query)) { 483 | // Validate vector query 484 | if (!query.every((n) => typeof n === 'number')) { 485 | throw new Error('Vector query must contain only numbers'); 486 | } 487 | // Vector similarity search 488 | const results = await this.search_similar(query); 489 | entities = results.map((r) => r.entity); 490 | } else { 491 | // Validate text query 492 | if (typeof query !== 'string') { 493 | throw new Error('Text query must be a string'); 494 | } 495 | if (query.trim() === '') { 496 | throw new Error('Text query cannot be empty'); 497 | } 498 | // Text-based search 499 | entities = await this.search_entities(query); 500 | } 501 | 502 | // If no entities found, return empty result 503 | if (entities.length === 0) { 504 | return { entities: [], relations: [] }; 505 | } 506 | 507 | const relations = await this.get_relations_for_entities( 508 | entities, 509 | ); 510 | return { entities, relations }; 511 | } catch (error) { 512 | throw new Error( 513 | `Node search failed: ${ 514 | error instanceof Error ? error.message : String(error) 515 | }`, 516 | ); 517 | } 518 | } 519 | 520 | // Database operations 521 | public get_client() { 522 | return this.client; 523 | } 524 | 525 | public async initialize() { 526 | try { 527 | // Create tables if they don't exist - each as a single statement 528 | await this.client.execute(` 529 | CREATE TABLE IF NOT EXISTS entities ( 530 | name TEXT PRIMARY KEY, 531 | entity_type TEXT NOT NULL, 532 | embedding F32_BLOB(4), -- 4-dimension vector for testing 533 | created_at DATETIME DEFAULT CURRENT_TIMESTAMP 534 | ) 535 | `); 536 | 537 | await this.client.execute(` 538 | CREATE TABLE IF NOT EXISTS observations ( 539 | id INTEGER PRIMARY KEY AUTOINCREMENT, 540 | entity_name TEXT NOT NULL, 541 | content TEXT NOT NULL, 542 | created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 543 | FOREIGN KEY (entity_name) REFERENCES entities(name) 544 | ) 545 | `); 546 | 547 | await this.client.execute(` 548 | CREATE TABLE IF NOT EXISTS relations ( 549 | id INTEGER PRIMARY KEY AUTOINCREMENT, 550 | source TEXT NOT NULL, 551 | target TEXT NOT NULL, 552 | relation_type TEXT NOT NULL, 553 | created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 554 | FOREIGN KEY (source) REFERENCES entities(name), 555 | FOREIGN KEY (target) REFERENCES entities(name) 556 | ) 557 | `); 558 | 559 | // Create all indexes in a single batch transaction 560 | await this.client.batch( 561 | [ 562 | { 563 | sql: 'CREATE INDEX IF NOT EXISTS idx_entities_name ON entities(name)', 564 | args: [], 565 | }, 566 | { 567 | sql: 'CREATE INDEX IF NOT EXISTS idx_observations_entity ON observations(entity_name)', 568 | args: [], 569 | }, 570 | { 571 | sql: 'CREATE INDEX IF NOT EXISTS idx_relations_source ON relations(source)', 572 | args: [], 573 | }, 574 | { 575 | sql: 'CREATE INDEX IF NOT EXISTS idx_relations_target ON relations(target)', 576 | args: [], 577 | }, 578 | { 579 | sql: 'CREATE INDEX IF NOT EXISTS idx_entities_embedding ON entities(libsql_vector_idx(embedding))', 580 | args: [], 581 | }, 582 | ], 583 | 'write', 584 | ); 585 | } catch (error) { 586 | throw new Error( 587 | `Database initialization failed: ${ 588 | error instanceof Error ? error.message : String(error) 589 | }`, 590 | ); 591 | } 592 | } 593 | 594 | public async close() { 595 | try { 596 | await this.client.close(); 597 | } catch (error) { 598 | console.error('Error closing database connection:', error); 599 | } 600 | } 601 | } 602 | 603 | export type { DatabaseConfig }; 604 | -------------------------------------------------------------------------------- /src/db/config.ts: -------------------------------------------------------------------------------- 1 | import { DatabaseConfig } from './client.js'; 2 | 3 | export function get_database_config(): DatabaseConfig { 4 | const url = process.env.LIBSQL_URL || 'file:./memory-tool.db'; 5 | const auth_token = process.env.LIBSQL_AUTH_TOKEN; 6 | 7 | return { 8 | url, 9 | authToken: auth_token, 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /src/db/migrations/run.ts: -------------------------------------------------------------------------------- 1 | import { DatabaseManager } from '../client.js'; 2 | import { get_database_config } from '../config.js'; 3 | import { schema } from './schema.js'; 4 | 5 | async function run_migrations() { 6 | const config = get_database_config(); 7 | const db_manager = await DatabaseManager.get_instance(config); 8 | const db = db_manager.get_client(); 9 | 10 | try { 11 | console.log('Starting migrations...'); 12 | 13 | for (const migration of schema) { 14 | console.log(`Executing: ${migration.slice(0, 50)}...`); 15 | await db.execute(migration); 16 | } 17 | 18 | console.log('Migrations completed successfully'); 19 | } catch (error) { 20 | console.error('Error running migrations:', error); 21 | throw error; 22 | } 23 | } 24 | 25 | // Run migrations if this file is executed directly 26 | if (require.main === module) { 27 | run_migrations() 28 | .then(() => process.exit(0)) 29 | .catch((error) => { 30 | console.error(error); 31 | process.exit(1); 32 | }); 33 | } 34 | 35 | export { run_migrations }; 36 | -------------------------------------------------------------------------------- /src/db/migrations/schema.ts: -------------------------------------------------------------------------------- 1 | export const schema = [ 2 | // Create entities table 3 | `CREATE TABLE IF NOT EXISTS entities ( 4 | name TEXT PRIMARY KEY, 5 | entity_type TEXT NOT NULL, 6 | embedding F32_BLOB(4), -- 4 dimensions for testing 7 | created_at DATETIME DEFAULT CURRENT_TIMESTAMP 8 | )`, 9 | 10 | // Create observations table 11 | `CREATE TABLE IF NOT EXISTS observations ( 12 | id INTEGER PRIMARY KEY AUTOINCREMENT, 13 | entity_name TEXT NOT NULL, 14 | content TEXT NOT NULL, 15 | created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 16 | FOREIGN KEY (entity_name) REFERENCES entities(name) 17 | )`, 18 | 19 | // Create relations table 20 | `CREATE TABLE IF NOT EXISTS relations ( 21 | id INTEGER PRIMARY KEY AUTOINCREMENT, 22 | source TEXT NOT NULL, 23 | target TEXT NOT NULL, 24 | relation_type TEXT NOT NULL, 25 | created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 26 | FOREIGN KEY (source) REFERENCES entities(name), 27 | FOREIGN KEY (target) REFERENCES entities(name) 28 | )`, 29 | 30 | // Create indexes 31 | `CREATE INDEX IF NOT EXISTS idx_entities_name ON entities(name)`, 32 | `CREATE INDEX IF NOT EXISTS idx_observations_entity ON observations(entity_name)`, 33 | `CREATE INDEX IF NOT EXISTS idx_relations_source ON relations(source)`, 34 | `CREATE INDEX IF NOT EXISTS idx_relations_target ON relations(target)`, 35 | 36 | // Create vector index for similarity search 37 | `CREATE INDEX IF NOT EXISTS idx_entities_embedding ON entities(libsql_vector_idx(embedding))`, 38 | ]; 39 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import { Server } from '@modelcontextprotocol/sdk/server/index.js'; 3 | import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; 4 | import { 5 | CallToolRequest, 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 | import { DatabaseManager } from './db/client.js'; 15 | import { get_database_config } from './db/config.js'; 16 | import { Relation } from './types/index.js'; 17 | 18 | const __filename = fileURLToPath(import.meta.url); 19 | const __dirname = dirname(__filename); 20 | const pkg = JSON.parse( 21 | readFileSync(join(__dirname, '..', 'package.json'), 'utf8'), 22 | ); 23 | const { name, version } = pkg; 24 | 25 | class LibSqlMemoryServer { 26 | private server: Server; 27 | private db!: DatabaseManager; 28 | 29 | private constructor() { 30 | this.server = new Server( 31 | { name, version }, 32 | { 33 | capabilities: { 34 | tools: { 35 | create_entities: {}, 36 | search_nodes: {}, 37 | read_graph: {}, 38 | create_relations: {}, 39 | delete_entity: {}, 40 | delete_relation: {}, 41 | }, 42 | }, 43 | }, 44 | ); 45 | 46 | // Error handling 47 | this.server.onerror = (error: Error) => 48 | console.error('[MCP Error]', error); 49 | process.on('SIGINT', async () => { 50 | await this.db?.close(); 51 | await this.server.close(); 52 | process.exit(0); 53 | }); 54 | } 55 | 56 | public static async create(): Promise { 57 | const instance = new LibSqlMemoryServer(); 58 | const config = get_database_config(); 59 | instance.db = await DatabaseManager.get_instance(config); 60 | instance.setup_tool_handlers(); 61 | return instance; 62 | } 63 | 64 | private setup_tool_handlers() { 65 | this.server.setRequestHandler( 66 | ListToolsRequestSchema, 67 | async () => ({ 68 | tools: [ 69 | { 70 | name: 'create_entities', 71 | description: 72 | 'Create new entities with observations and optional embeddings', 73 | inputSchema: { 74 | type: 'object', 75 | properties: { 76 | entities: { 77 | type: 'array', 78 | items: { 79 | type: 'object', 80 | properties: { 81 | name: { type: 'string' }, 82 | entityType: { type: 'string' }, 83 | observations: { 84 | type: 'array', 85 | items: { type: 'string' }, 86 | }, 87 | embedding: { 88 | type: 'array', 89 | items: { type: 'number' }, 90 | description: 91 | 'Optional vector embedding for similarity search', 92 | }, 93 | }, 94 | required: ['name', 'entityType', 'observations'], 95 | }, 96 | }, 97 | }, 98 | required: ['entities'], 99 | }, 100 | }, 101 | { 102 | name: 'search_nodes', 103 | description: 104 | 'Search for entities and their relations using text or vector similarity', 105 | inputSchema: { 106 | type: 'object', 107 | properties: { 108 | query: { 109 | oneOf: [ 110 | { 111 | type: 'string', 112 | description: 'Text search query', 113 | }, 114 | { 115 | type: 'array', 116 | items: { type: 'number' }, 117 | description: 'Vector for similarity search', 118 | }, 119 | ], 120 | }, 121 | }, 122 | required: ['query'], 123 | }, 124 | }, 125 | { 126 | name: 'read_graph', 127 | description: 'Get recent entities and their relations', 128 | inputSchema: { 129 | type: 'object', 130 | properties: {}, 131 | required: [], 132 | }, 133 | }, 134 | { 135 | name: 'create_relations', 136 | description: 'Create relations between entities', 137 | inputSchema: { 138 | type: 'object', 139 | properties: { 140 | relations: { 141 | type: 'array', 142 | items: { 143 | type: 'object', 144 | properties: { 145 | source: { type: 'string' }, 146 | target: { type: 'string' }, 147 | type: { type: 'string' }, 148 | }, 149 | required: ['source', 'target', 'type'], 150 | }, 151 | }, 152 | }, 153 | required: ['relations'], 154 | }, 155 | }, 156 | { 157 | name: 'delete_entity', 158 | description: 159 | 'Delete an entity and all its associated data (observations and relations)', 160 | inputSchema: { 161 | type: 'object', 162 | properties: { 163 | name: { 164 | type: 'string', 165 | description: 'Name of the entity to delete', 166 | }, 167 | }, 168 | required: ['name'], 169 | }, 170 | }, 171 | { 172 | name: 'delete_relation', 173 | description: 174 | 'Delete a specific relation between entities', 175 | inputSchema: { 176 | type: 'object', 177 | properties: { 178 | source: { 179 | type: 'string', 180 | description: 'Source entity name', 181 | }, 182 | target: { 183 | type: 'string', 184 | description: 'Target entity name', 185 | }, 186 | type: { 187 | type: 'string', 188 | description: 'Type of relation', 189 | }, 190 | }, 191 | required: ['source', 'target', 'type'], 192 | }, 193 | }, 194 | ], 195 | }), 196 | ); 197 | 198 | this.server.setRequestHandler( 199 | CallToolRequestSchema, 200 | async (request: CallToolRequest) => { 201 | try { 202 | switch (request.params.name) { 203 | case 'create_entities': { 204 | const entities = request.params.arguments 205 | ?.entities as Array<{ 206 | name: string; 207 | entityType: string; 208 | observations: string[]; 209 | embedding?: number[]; 210 | }>; 211 | if (!entities) { 212 | throw new McpError( 213 | ErrorCode.InvalidParams, 214 | 'Missing entities parameter', 215 | ); 216 | } 217 | await this.db.create_entities(entities); 218 | return { 219 | content: [ 220 | { 221 | type: 'text', 222 | text: `Successfully processed ${entities.length} entities (created new or updated existing)`, 223 | }, 224 | ], 225 | }; 226 | } 227 | 228 | case 'search_nodes': { 229 | const query = request.params.arguments?.query; 230 | if (query === undefined || query === null) { 231 | throw new McpError( 232 | ErrorCode.InvalidParams, 233 | 'Missing query parameter', 234 | ); 235 | } 236 | // Validate query type 237 | if ( 238 | !(typeof query === 'string' || Array.isArray(query)) 239 | ) { 240 | throw new McpError( 241 | ErrorCode.InvalidParams, 242 | 'Query must be either a string or number array', 243 | ); 244 | } 245 | const result = await this.db.search_nodes(query); 246 | return { 247 | content: [ 248 | { 249 | type: 'text', 250 | text: JSON.stringify(result, null, 2), 251 | }, 252 | ], 253 | }; 254 | } 255 | 256 | case 'read_graph': { 257 | const result = await this.db.read_graph(); 258 | return { 259 | content: [ 260 | { 261 | type: 'text', 262 | text: JSON.stringify(result, null, 2), 263 | }, 264 | ], 265 | }; 266 | } 267 | 268 | case 'create_relations': { 269 | const relations = request.params.arguments 270 | ?.relations as Array<{ 271 | source: string; 272 | target: string; 273 | type: string; 274 | }>; 275 | if (!relations) { 276 | throw new McpError( 277 | ErrorCode.InvalidParams, 278 | 'Missing relations parameter', 279 | ); 280 | } 281 | // Convert to internal Relation type 282 | const internalRelations: Relation[] = relations.map( 283 | (r) => ({ 284 | from: r.source, 285 | to: r.target, 286 | relationType: r.type, 287 | }), 288 | ); 289 | await this.db.create_relations(internalRelations); 290 | return { 291 | content: [ 292 | { 293 | type: 'text', 294 | text: `Created ${relations.length} relations`, 295 | }, 296 | ], 297 | }; 298 | } 299 | 300 | case 'delete_entity': { 301 | const name = request.params.arguments?.name; 302 | if (!name || typeof name !== 'string') { 303 | throw new McpError( 304 | ErrorCode.InvalidParams, 305 | 'Missing or invalid entity name', 306 | ); 307 | } 308 | await this.db.delete_entity(name); 309 | return { 310 | content: [ 311 | { 312 | type: 'text', 313 | text: `Successfully deleted entity "${name}" and its associated data`, 314 | }, 315 | ], 316 | }; 317 | } 318 | 319 | case 'delete_relation': { 320 | const { source, target, type } = 321 | request.params.arguments || {}; 322 | if ( 323 | !source || 324 | !target || 325 | !type || 326 | typeof source !== 'string' || 327 | typeof target !== 'string' || 328 | typeof type !== 'string' 329 | ) { 330 | throw new McpError( 331 | ErrorCode.InvalidParams, 332 | 'Missing or invalid relation parameters', 333 | ); 334 | } 335 | await this.db.delete_relation(source, target, type); 336 | return { 337 | content: [ 338 | { 339 | type: 'text', 340 | text: `Successfully deleted relation: ${source} -> ${target} (${type})`, 341 | }, 342 | ], 343 | }; 344 | } 345 | 346 | default: 347 | throw new McpError( 348 | ErrorCode.MethodNotFound, 349 | `Unknown tool: ${request.params.name}`, 350 | ); 351 | } 352 | } catch (error) { 353 | if (error instanceof McpError) throw error; 354 | throw new McpError( 355 | ErrorCode.InternalError, 356 | error instanceof Error ? error.message : String(error), 357 | ); 358 | } 359 | }, 360 | ); 361 | } 362 | 363 | async run() { 364 | const transport = new StdioServerTransport(); 365 | await this.server.connect(transport); 366 | console.error('LibSQL Memory MCP server running on stdio'); 367 | } 368 | } 369 | 370 | LibSqlMemoryServer.create() 371 | .then((server) => server.run()) 372 | .catch(console.error); 373 | -------------------------------------------------------------------------------- /src/types/index.ts: -------------------------------------------------------------------------------- 1 | export interface Entity { 2 | name: string; 3 | entityType: string; 4 | observations: string[]; 5 | embedding?: number[]; 6 | } 7 | 8 | export interface Relation { 9 | from: string; 10 | to: string; 11 | relationType: string; 12 | embedding?: number[]; 13 | } 14 | 15 | export interface SearchResult { 16 | entity: Entity; 17 | distance: number; 18 | } 19 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------