├── .github └── FUNDING.yml ├── .gitignore ├── .readme ├── cursor-mcp-settings.jpg └── mcp-sqlite.jpg ├── CHANGELOG.md ├── LICENSE ├── README.md ├── mcp-sqlite-server.js ├── package-lock.json └── package.json /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: jparkerweb 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username 14 | thanks_dev: # Replace with a single thanks.dev username 15 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .git 2 | node_modules/ 3 | .cursor/ 4 | test.db -------------------------------------------------------------------------------- /.readme/cursor-mcp-settings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jparkerweb/mcp-sqlite/1d6662d79810a862e3914a7bf332cf70c6827c99/.readme/cursor-mcp-settings.jpg -------------------------------------------------------------------------------- /.readme/mcp-sqlite.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jparkerweb/mcp-sqlite/1d6662d79810a862e3914a7bf332cf70c6827c99/.readme/mcp-sqlite.jpg -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to the MCP SQLite Server will be documented in this file. 4 | 5 | ## [1.0.7] - 2025-06-02 6 | ### 📦 Updated 7 | - Added a "description" parameter to each tool definitions for better Agent selection 8 | 9 | ### 🐛 Fixed 10 | - Resolved a know validation issue with VS Code that requires stricter JSON schema validation 11 | 12 | ## [1.0.0] - 2025-04-05 13 | ### ✨ Added 14 | - Initial release of MCP SQLite Server 15 | - Complete set of CRUD operations: 16 | - `create_record` - Insert data into tables 17 | - `read_records` - Query records with filtering, limit and offset 18 | - `update_records` - Modify existing records with conditions 19 | - `delete_records` - Remove records matching conditions 20 | - Database exploration tools: 21 | - `list_tables` - List all tables in the database 22 | - `get_table_schema` - Get column information for tables 23 | - `db_info` - Get database file metadata 24 | - Custom SQL query execution with the `query` tool 25 | - Support for relative and absolute database paths 26 | - Detailed error reporting for all operations 27 | - Comprehensive JSON response formatting 28 | - Full documentation in README.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Justin Parker 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 SQLite Server 2 | This is a Model Context Protocol (MCP) server that provides comprehensive SQLite database interaction capabilities. 3 | 4 | ![cursor-settings](https://raw.githubusercontent.com/jparkerweb/mcp-sqlite/refs/heads/main/.readme/mcp-sqlite.jpg) 5 | 6 | #### Maintained by 7 | 8 | eQuill Labs 9 | 10 | 11 | ## Features 12 | - Complete CRUD operations (Create, Read, Update, Delete) 13 | - Database exploration and introspection 14 | - Execute custom SQL queries 15 | 16 | ## Setup 17 | 18 | Define the command in your IDE's MCP Server settings: 19 | 20 | e.g. `Cursor`: 21 | ```json 22 | { 23 | "mcpServers": { 24 | "MCP SQLite Server": { 25 | "command": "npx", 26 | "args": [ 27 | "-y", 28 | "mcp-sqlite", 29 | "" 30 | ] 31 | } 32 | } 33 | } 34 | ``` 35 | 36 | e.g. `VSCode`: 37 | ```json 38 | { 39 | "servers": { 40 | "MCP SQLite Server": { 41 | "type": "stdio", 42 | "command": "npx", 43 | "args": [ 44 | "-y", 45 | "mcp-sqlite", 46 | "" 47 | ] 48 | } 49 | } 50 | } 51 | ``` 52 | 53 | ![cursor-settings](https://raw.githubusercontent.com/jparkerweb/mcp-sqlite/refs/heads/main/.readme/cursor-mcp-settings.jpg) 54 | 55 | Your database path must be provided as an argument. 56 | 57 | ## Available Tools 58 | 59 | ### Database Information 60 | 61 | #### db_info 62 | 63 | Get detailed information about the connected database. 64 | 65 | Example: 66 | ```json 67 | { 68 | "method": "tools/call", 69 | "params": { 70 | "name": "db_info", 71 | "arguments": {} 72 | } 73 | } 74 | ``` 75 | 76 | #### list_tables 77 | 78 | List all tables in the database. 79 | 80 | Example: 81 | ```json 82 | { 83 | "method": "tools/call", 84 | "params": { 85 | "name": "list_tables", 86 | "arguments": {} 87 | } 88 | } 89 | ``` 90 | 91 | #### get_table_schema 92 | 93 | Get detailed information about a table's schema. 94 | 95 | Parameters: 96 | - `tableName` (string): Name of the table 97 | 98 | Example: 99 | ```json 100 | { 101 | "method": "tools/call", 102 | "params": { 103 | "name": "get_table_schema", 104 | "arguments": { 105 | "tableName": "users" 106 | } 107 | } 108 | } 109 | ``` 110 | 111 | ### CRUD Operations 112 | 113 | #### create_record 114 | 115 | Insert a new record into a table. 116 | 117 | Parameters: 118 | - `table` (string): Name of the table 119 | - `data` (object): Record data as key-value pairs 120 | 121 | Example: 122 | ```json 123 | { 124 | "method": "tools/call", 125 | "params": { 126 | "name": "create_record", 127 | "arguments": { 128 | "table": "users", 129 | "data": { 130 | "name": "John Doe", 131 | "email": "john@example.com", 132 | "age": 30 133 | } 134 | } 135 | } 136 | } 137 | ``` 138 | 139 | #### read_records 140 | 141 | Query records from a table with optional filtering. 142 | 143 | Parameters: 144 | - `table` (string): Name of the table 145 | - `conditions` (object, optional): Filter conditions as key-value pairs 146 | - `limit` (number, optional): Maximum number of records to return 147 | - `offset` (number, optional): Number of records to skip 148 | 149 | Example: 150 | ```json 151 | { 152 | "method": "tools/call", 153 | "params": { 154 | "name": "read_records", 155 | "arguments": { 156 | "table": "users", 157 | "conditions": { 158 | "age": 30 159 | }, 160 | "limit": 10, 161 | "offset": 0 162 | } 163 | } 164 | } 165 | ``` 166 | 167 | #### update_records 168 | 169 | Update records in a table that match specified conditions. 170 | 171 | Parameters: 172 | - `table` (string): Name of the table 173 | - `data` (object): New values as key-value pairs 174 | - `conditions` (object): Filter conditions as key-value pairs 175 | 176 | Example: 177 | ```json 178 | { 179 | "method": "tools/call", 180 | "params": { 181 | "name": "update_records", 182 | "arguments": { 183 | "table": "users", 184 | "data": { 185 | "email": "john.updated@example.com" 186 | }, 187 | "conditions": { 188 | "id": 1 189 | } 190 | } 191 | } 192 | } 193 | ``` 194 | 195 | #### delete_records 196 | 197 | Delete records from a table that match specified conditions. 198 | 199 | Parameters: 200 | - `table` (string): Name of the table 201 | - `conditions` (object): Filter conditions as key-value pairs 202 | 203 | Example: 204 | ```json 205 | { 206 | "method": "tools/call", 207 | "params": { 208 | "name": "delete_records", 209 | "arguments": { 210 | "table": "users", 211 | "conditions": { 212 | "id": 1 213 | } 214 | } 215 | } 216 | } 217 | ``` 218 | 219 | ### Custom Queries 220 | 221 | #### query 222 | 223 | Execute a custom SQL query against the connected SQLite database. 224 | 225 | Parameters: 226 | - `sql` (string): The SQL query to execute 227 | - `values` (array, optional): Array of parameter values to use in the query 228 | 229 | Example: 230 | ```json 231 | { 232 | "method": "tools/call", 233 | "params": { 234 | "name": "query", 235 | "arguments": { 236 | "sql": "SELECT * FROM users WHERE id = ?", 237 | "values": [1] 238 | } 239 | } 240 | } 241 | ``` 242 | 243 | ## Built with 244 | 245 | - [Model Context Protocol SDK](https://github.com/modelcontextprotocol/typescript-sdk) 246 | - [sqlite3](https://github.com/TryGhost/node-sqlite3) 247 | 248 | --- 249 | 250 | ## Appreciation 251 | If you enjoy this library please consider sending me a tip to support my work 😀 252 | ### [🍵 tip me here](https://ko-fi.com/jparkerweb) 253 | -------------------------------------------------------------------------------- /mcp-sqlite-server.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const sqlite3 = require('sqlite3').verbose(); 4 | const { McpServer } = require('@modelcontextprotocol/sdk/server/mcp.js'); 5 | const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js'); 6 | const { existsSync, statSync } = require('node:fs'); 7 | const { z } = require('zod'); 8 | const path = require('path'); 9 | 10 | class SQLiteHandler { 11 | constructor(dbPath) { 12 | this.dbPath = dbPath; 13 | 14 | // Open the database without logging 15 | this.db = new sqlite3.Database(dbPath, (err) => { 16 | if (err) { 17 | console.error(`Error opening database: ${err.message}`); 18 | } 19 | }); 20 | } 21 | 22 | async executeQuery(sql, values = []) { 23 | return new Promise((resolve, reject) => { 24 | this.db.all(sql, values, (err, rows) => { 25 | if (err) { 26 | reject(err); 27 | } else { 28 | resolve(rows); 29 | } 30 | }); 31 | }); 32 | } 33 | 34 | async executeRun(sql, values = []) { 35 | return new Promise((resolve, reject) => { 36 | this.db.run(sql, values, function(err) { 37 | if (err) { 38 | reject(err); 39 | } else { 40 | resolve({ 41 | lastID: this.lastID, 42 | changes: this.changes 43 | }); 44 | } 45 | }); 46 | }); 47 | } 48 | 49 | async listTables() { 50 | return this.executeQuery( 51 | "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'" 52 | ); 53 | } 54 | 55 | async getTableSchema(tableName) { 56 | return this.executeQuery(`PRAGMA table_info(${tableName})`); 57 | } 58 | } 59 | 60 | async function main() { 61 | const dbPath = process.argv[2] || 'mydatabase.db'; 62 | 63 | // Resolve to absolute path if relative 64 | const absoluteDbPath = path.isAbsolute(dbPath) ? dbPath : path.resolve(process.cwd(), dbPath); 65 | const handler = new SQLiteHandler(absoluteDbPath); 66 | const server = new McpServer({ 67 | name: "mcp-sqlite-server", 68 | version: "1.0.0" 69 | }); 70 | 71 | // Add a database info tool for debugging 72 | server.tool( 73 | "db_info", 74 | "Get information about the SQLite database including path, existence, size, and table count", 75 | {}, 76 | async () => { 77 | try { 78 | const dbExists = existsSync(absoluteDbPath); 79 | let fileSize = 0; 80 | let fileStats = null; 81 | 82 | if (dbExists) { 83 | fileStats = statSync(absoluteDbPath); 84 | fileSize = fileStats.size; 85 | } 86 | 87 | // Get table count 88 | const tableCountResult = await handler.executeQuery( 89 | "SELECT count(*) as count FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'" 90 | ); 91 | 92 | return { 93 | content: [{ 94 | type: "text", 95 | text: JSON.stringify({ 96 | dbPath: absoluteDbPath, 97 | exists: dbExists, 98 | size: fileSize, 99 | lastModified: dbExists ? fileStats.mtime.toString() : null, 100 | tableCount: tableCountResult[0].count 101 | }, null, 2) 102 | }] 103 | }; 104 | } catch (error) { 105 | return { 106 | content: [{ 107 | type: "text", 108 | text: `Error getting database info: ${error.message}` 109 | }], 110 | isError: true 111 | }; 112 | } 113 | } 114 | ); 115 | 116 | // Register SQLite query tool 117 | server.tool( 118 | "query", 119 | "Execute a raw SQL query against the database with optional parameter values", 120 | { 121 | sql: z.string(), 122 | values: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional() 123 | }, 124 | async ({ sql, values }) => { 125 | try { 126 | const results = await handler.executeQuery(sql, values); 127 | return { 128 | content: [{ 129 | type: "text", 130 | text: JSON.stringify(results, null, 2) 131 | }] 132 | }; 133 | } catch (error) { 134 | return { 135 | content: [{ 136 | type: "text", 137 | text: `Error: ${error.message}` 138 | }], 139 | isError: true 140 | }; 141 | } 142 | } 143 | ); 144 | 145 | // List Tables 146 | server.tool( 147 | "list_tables", 148 | "List all user tables in the SQLite database (excludes system tables)", 149 | {}, 150 | async () => { 151 | try { 152 | const tables = await handler.listTables(); 153 | 154 | if (tables.length === 0) { 155 | return { 156 | content: [{ 157 | type: "text", 158 | text: JSON.stringify({ 159 | message: "No tables found in database", 160 | dbPath: absoluteDbPath, 161 | exists: existsSync(absoluteDbPath), 162 | size: existsSync(absoluteDbPath) ? statSync(absoluteDbPath).size : 0 163 | }, null, 2) 164 | }] 165 | }; 166 | } 167 | 168 | return { 169 | content: [{ 170 | type: "text", 171 | text: JSON.stringify(tables, null, 2) 172 | }] 173 | }; 174 | } catch (error) { 175 | return { 176 | content: [{ 177 | type: "text", 178 | text: `Error listing tables: ${error.message}` 179 | }], 180 | isError: true 181 | }; 182 | } 183 | } 184 | ); 185 | 186 | // Get Table Schema 187 | server.tool( 188 | "get_table_schema", 189 | "Get the schema information for a specific table including column details", 190 | { 191 | tableName: z.string() 192 | }, 193 | async ({ tableName }) => { 194 | try { 195 | const schema = await handler.getTableSchema(tableName); 196 | return { 197 | content: [{ 198 | type: "text", 199 | text: JSON.stringify(schema, null, 2) 200 | }] 201 | }; 202 | } catch (error) { 203 | return { 204 | content: [{ 205 | type: "text", 206 | text: `Error getting schema: ${error.message}` 207 | }], 208 | isError: true 209 | }; 210 | } 211 | } 212 | ); 213 | 214 | // Create Record 215 | server.tool( 216 | "create_record", 217 | "Insert a new record into a table with specified data", 218 | { 219 | table: z.string(), 220 | data: z.record(z.any()) 221 | }, 222 | async ({ table, data }) => { 223 | try { 224 | const columns = Object.keys(data); 225 | const placeholders = columns.map(() => '?').join(', '); 226 | const values = Object.values(data); 227 | 228 | const sql = `INSERT INTO ${table} (${columns.join(', ')}) VALUES (${placeholders})`; 229 | const result = await handler.executeRun(sql, values); 230 | 231 | return { 232 | content: [{ 233 | type: "text", 234 | text: JSON.stringify({ 235 | message: "Record created successfully", 236 | insertedId: result.lastID 237 | }, null, 2) 238 | }] 239 | }; 240 | } catch (error) { 241 | return { 242 | content: [{ 243 | type: "text", 244 | text: `Error creating record: ${error.message}` 245 | }], 246 | isError: true 247 | }; 248 | } 249 | } 250 | ); 251 | 252 | // Read Records 253 | server.tool( 254 | "read_records", 255 | "Read records from a table with optional conditions, limit, and offset", 256 | { 257 | table: z.string(), 258 | conditions: z.record(z.any()).optional(), 259 | limit: z.number().optional(), 260 | offset: z.number().optional() 261 | }, 262 | async ({ table, conditions, limit, offset }) => { 263 | try { 264 | let sql = `SELECT * FROM ${table}`; 265 | const values = []; 266 | 267 | // Add WHERE clause if conditions provided 268 | if (conditions && Object.keys(conditions).length > 0) { 269 | const whereConditions = Object.entries(conditions).map(([column, value]) => { 270 | values.push(value); 271 | return `${column} = ?`; 272 | }).join(' AND '); 273 | 274 | sql += ` WHERE ${whereConditions}`; 275 | } 276 | 277 | // Add LIMIT and OFFSET 278 | if (limit !== undefined) { 279 | sql += ` LIMIT ${limit}`; 280 | if (offset !== undefined) { 281 | sql += ` OFFSET ${offset}`; 282 | } 283 | } 284 | 285 | const results = await handler.executeQuery(sql, values); 286 | 287 | return { 288 | content: [{ 289 | type: "text", 290 | text: JSON.stringify(results, null, 2) 291 | }] 292 | }; 293 | } catch (error) { 294 | return { 295 | content: [{ 296 | type: "text", 297 | text: `Error reading records: ${error.message}` 298 | }], 299 | isError: true 300 | }; 301 | } 302 | } 303 | ); 304 | 305 | // Update Records 306 | server.tool( 307 | "update_records", 308 | "Update records in a table based on specified conditions", 309 | { 310 | table: z.string(), 311 | data: z.record(z.any()), 312 | conditions: z.record(z.any()) 313 | }, 314 | async ({ table, data, conditions }) => { 315 | try { 316 | // Build SET clause 317 | const setClause = Object.keys(data).map(key => `${key} = ?`).join(', '); 318 | const setValues = Object.values(data); 319 | 320 | // Build WHERE clause 321 | const whereClause = Object.keys(conditions).map(key => `${key} = ?`).join(' AND '); 322 | const whereValues = Object.values(conditions); 323 | 324 | const sql = `UPDATE ${table} SET ${setClause} WHERE ${whereClause}`; 325 | const result = await handler.executeRun(sql, [...setValues, ...whereValues]); 326 | 327 | return { 328 | content: [{ 329 | type: "text", 330 | text: JSON.stringify({ 331 | message: "Records updated successfully", 332 | rowsAffected: result.changes 333 | }, null, 2) 334 | }] 335 | }; 336 | } catch (error) { 337 | return { 338 | content: [{ 339 | type: "text", 340 | text: `Error updating records: ${error.message}` 341 | }], 342 | isError: true 343 | }; 344 | } 345 | } 346 | ); 347 | 348 | // Delete Records 349 | server.tool( 350 | "delete_records", 351 | "Delete records from a table based on specified conditions", 352 | { 353 | table: z.string(), 354 | conditions: z.record(z.any()) 355 | }, 356 | async ({ table, conditions }) => { 357 | try { 358 | // Build WHERE clause 359 | const whereClause = Object.keys(conditions).map(key => `${key} = ?`).join(' AND '); 360 | const values = Object.values(conditions); 361 | 362 | const sql = `DELETE FROM ${table} WHERE ${whereClause}`; 363 | const result = await handler.executeRun(sql, values); 364 | 365 | return { 366 | content: [{ 367 | type: "text", 368 | text: JSON.stringify({ 369 | message: "Records deleted successfully", 370 | rowsAffected: result.changes 371 | }, null, 2) 372 | }] 373 | }; 374 | } catch (error) { 375 | return { 376 | content: [{ 377 | type: "text", 378 | text: `Error deleting records: ${error.message}` 379 | }], 380 | isError: true 381 | }; 382 | } 383 | } 384 | ); 385 | 386 | const transport = new StdioServerTransport(); 387 | await server.connect(transport); 388 | } 389 | 390 | main(); 391 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mcp-sqlite", 3 | "version": "1.0.7", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "mcp-sqlite", 9 | "version": "1.0.7", 10 | "hasInstallScript": true, 11 | "license": "ISC", 12 | "dependencies": { 13 | "@modelcontextprotocol/sdk": "^1.12.1", 14 | "sqlite3": "^5.1.7" 15 | }, 16 | "bin": { 17 | "mcp-sqlite-server": "mcp-sqlite-server.js" 18 | }, 19 | "engines": { 20 | "node": ">=14.0.0" 21 | } 22 | }, 23 | "node_modules/@gar/promisify": { 24 | "version": "1.1.3", 25 | "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", 26 | "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", 27 | "optional": true 28 | }, 29 | "node_modules/@modelcontextprotocol/sdk": { 30 | "version": "1.12.1", 31 | "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.12.1.tgz", 32 | "integrity": "sha512-KG1CZhZfWg+u8pxeM/mByJDScJSrjjxLc8fwQqbsS8xCjBmQfMNEBTotYdNanKekepnfRI85GtgQlctLFpcYPw==", 33 | "dependencies": { 34 | "ajv": "^6.12.6", 35 | "content-type": "^1.0.5", 36 | "cors": "^2.8.5", 37 | "cross-spawn": "^7.0.5", 38 | "eventsource": "^3.0.2", 39 | "express": "^5.0.1", 40 | "express-rate-limit": "^7.5.0", 41 | "pkce-challenge": "^5.0.0", 42 | "raw-body": "^3.0.0", 43 | "zod": "^3.23.8", 44 | "zod-to-json-schema": "^3.24.1" 45 | }, 46 | "engines": { 47 | "node": ">=18" 48 | } 49 | }, 50 | "node_modules/@npmcli/fs": { 51 | "version": "1.1.1", 52 | "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", 53 | "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", 54 | "optional": true, 55 | "dependencies": { 56 | "@gar/promisify": "^1.0.1", 57 | "semver": "^7.3.5" 58 | } 59 | }, 60 | "node_modules/@npmcli/move-file": { 61 | "version": "1.1.2", 62 | "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", 63 | "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", 64 | "deprecated": "This functionality has been moved to @npmcli/fs", 65 | "optional": true, 66 | "dependencies": { 67 | "mkdirp": "^1.0.4", 68 | "rimraf": "^3.0.2" 69 | }, 70 | "engines": { 71 | "node": ">=10" 72 | } 73 | }, 74 | "node_modules/@tootallnate/once": { 75 | "version": "1.1.2", 76 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 77 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 78 | "optional": true, 79 | "engines": { 80 | "node": ">= 6" 81 | } 82 | }, 83 | "node_modules/abbrev": { 84 | "version": "1.1.1", 85 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 86 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 87 | "optional": true 88 | }, 89 | "node_modules/accepts": { 90 | "version": "2.0.0", 91 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", 92 | "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", 93 | "dependencies": { 94 | "mime-types": "^3.0.0", 95 | "negotiator": "^1.0.0" 96 | }, 97 | "engines": { 98 | "node": ">= 0.6" 99 | } 100 | }, 101 | "node_modules/agent-base": { 102 | "version": "6.0.2", 103 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 104 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 105 | "optional": true, 106 | "dependencies": { 107 | "debug": "4" 108 | }, 109 | "engines": { 110 | "node": ">= 6.0.0" 111 | } 112 | }, 113 | "node_modules/agentkeepalive": { 114 | "version": "4.6.0", 115 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", 116 | "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", 117 | "optional": true, 118 | "dependencies": { 119 | "humanize-ms": "^1.2.1" 120 | }, 121 | "engines": { 122 | "node": ">= 8.0.0" 123 | } 124 | }, 125 | "node_modules/aggregate-error": { 126 | "version": "3.1.0", 127 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 128 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 129 | "optional": true, 130 | "dependencies": { 131 | "clean-stack": "^2.0.0", 132 | "indent-string": "^4.0.0" 133 | }, 134 | "engines": { 135 | "node": ">=8" 136 | } 137 | }, 138 | "node_modules/ajv": { 139 | "version": "6.12.6", 140 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 141 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 142 | "dependencies": { 143 | "fast-deep-equal": "^3.1.1", 144 | "fast-json-stable-stringify": "^2.0.0", 145 | "json-schema-traverse": "^0.4.1", 146 | "uri-js": "^4.2.2" 147 | }, 148 | "funding": { 149 | "type": "github", 150 | "url": "https://github.com/sponsors/epoberezkin" 151 | } 152 | }, 153 | "node_modules/ansi-regex": { 154 | "version": "5.0.1", 155 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 156 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 157 | "optional": true, 158 | "engines": { 159 | "node": ">=8" 160 | } 161 | }, 162 | "node_modules/aproba": { 163 | "version": "2.0.0", 164 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 165 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", 166 | "optional": true 167 | }, 168 | "node_modules/are-we-there-yet": { 169 | "version": "3.0.1", 170 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", 171 | "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", 172 | "deprecated": "This package is no longer supported.", 173 | "optional": true, 174 | "dependencies": { 175 | "delegates": "^1.0.0", 176 | "readable-stream": "^3.6.0" 177 | }, 178 | "engines": { 179 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 180 | } 181 | }, 182 | "node_modules/balanced-match": { 183 | "version": "1.0.2", 184 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 185 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 186 | "optional": true 187 | }, 188 | "node_modules/base64-js": { 189 | "version": "1.5.1", 190 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 191 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 192 | "funding": [ 193 | { 194 | "type": "github", 195 | "url": "https://github.com/sponsors/feross" 196 | }, 197 | { 198 | "type": "patreon", 199 | "url": "https://www.patreon.com/feross" 200 | }, 201 | { 202 | "type": "consulting", 203 | "url": "https://feross.org/support" 204 | } 205 | ] 206 | }, 207 | "node_modules/bindings": { 208 | "version": "1.5.0", 209 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 210 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 211 | "dependencies": { 212 | "file-uri-to-path": "1.0.0" 213 | } 214 | }, 215 | "node_modules/bl": { 216 | "version": "4.1.0", 217 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 218 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 219 | "dependencies": { 220 | "buffer": "^5.5.0", 221 | "inherits": "^2.0.4", 222 | "readable-stream": "^3.4.0" 223 | } 224 | }, 225 | "node_modules/body-parser": { 226 | "version": "2.2.0", 227 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", 228 | "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", 229 | "dependencies": { 230 | "bytes": "^3.1.2", 231 | "content-type": "^1.0.5", 232 | "debug": "^4.4.0", 233 | "http-errors": "^2.0.0", 234 | "iconv-lite": "^0.6.3", 235 | "on-finished": "^2.4.1", 236 | "qs": "^6.14.0", 237 | "raw-body": "^3.0.0", 238 | "type-is": "^2.0.0" 239 | }, 240 | "engines": { 241 | "node": ">=18" 242 | } 243 | }, 244 | "node_modules/brace-expansion": { 245 | "version": "1.1.11", 246 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 247 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 248 | "optional": true, 249 | "dependencies": { 250 | "balanced-match": "^1.0.0", 251 | "concat-map": "0.0.1" 252 | } 253 | }, 254 | "node_modules/buffer": { 255 | "version": "5.7.1", 256 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 257 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 258 | "funding": [ 259 | { 260 | "type": "github", 261 | "url": "https://github.com/sponsors/feross" 262 | }, 263 | { 264 | "type": "patreon", 265 | "url": "https://www.patreon.com/feross" 266 | }, 267 | { 268 | "type": "consulting", 269 | "url": "https://feross.org/support" 270 | } 271 | ], 272 | "dependencies": { 273 | "base64-js": "^1.3.1", 274 | "ieee754": "^1.1.13" 275 | } 276 | }, 277 | "node_modules/bytes": { 278 | "version": "3.1.2", 279 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 280 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 281 | "engines": { 282 | "node": ">= 0.8" 283 | } 284 | }, 285 | "node_modules/cacache": { 286 | "version": "15.3.0", 287 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", 288 | "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", 289 | "optional": true, 290 | "dependencies": { 291 | "@npmcli/fs": "^1.0.0", 292 | "@npmcli/move-file": "^1.0.1", 293 | "chownr": "^2.0.0", 294 | "fs-minipass": "^2.0.0", 295 | "glob": "^7.1.4", 296 | "infer-owner": "^1.0.4", 297 | "lru-cache": "^6.0.0", 298 | "minipass": "^3.1.1", 299 | "minipass-collect": "^1.0.2", 300 | "minipass-flush": "^1.0.5", 301 | "minipass-pipeline": "^1.2.2", 302 | "mkdirp": "^1.0.3", 303 | "p-map": "^4.0.0", 304 | "promise-inflight": "^1.0.1", 305 | "rimraf": "^3.0.2", 306 | "ssri": "^8.0.1", 307 | "tar": "^6.0.2", 308 | "unique-filename": "^1.1.1" 309 | }, 310 | "engines": { 311 | "node": ">= 10" 312 | } 313 | }, 314 | "node_modules/call-bind-apply-helpers": { 315 | "version": "1.0.2", 316 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", 317 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 318 | "dependencies": { 319 | "es-errors": "^1.3.0", 320 | "function-bind": "^1.1.2" 321 | }, 322 | "engines": { 323 | "node": ">= 0.4" 324 | } 325 | }, 326 | "node_modules/call-bound": { 327 | "version": "1.0.4", 328 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", 329 | "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 330 | "dependencies": { 331 | "call-bind-apply-helpers": "^1.0.2", 332 | "get-intrinsic": "^1.3.0" 333 | }, 334 | "engines": { 335 | "node": ">= 0.4" 336 | }, 337 | "funding": { 338 | "url": "https://github.com/sponsors/ljharb" 339 | } 340 | }, 341 | "node_modules/chownr": { 342 | "version": "2.0.0", 343 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 344 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", 345 | "engines": { 346 | "node": ">=10" 347 | } 348 | }, 349 | "node_modules/clean-stack": { 350 | "version": "2.2.0", 351 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 352 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 353 | "optional": true, 354 | "engines": { 355 | "node": ">=6" 356 | } 357 | }, 358 | "node_modules/color-support": { 359 | "version": "1.1.3", 360 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 361 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 362 | "optional": true, 363 | "bin": { 364 | "color-support": "bin.js" 365 | } 366 | }, 367 | "node_modules/concat-map": { 368 | "version": "0.0.1", 369 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 370 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 371 | "optional": true 372 | }, 373 | "node_modules/console-control-strings": { 374 | "version": "1.1.0", 375 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 376 | "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", 377 | "optional": true 378 | }, 379 | "node_modules/content-disposition": { 380 | "version": "1.0.0", 381 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", 382 | "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", 383 | "dependencies": { 384 | "safe-buffer": "5.2.1" 385 | }, 386 | "engines": { 387 | "node": ">= 0.6" 388 | } 389 | }, 390 | "node_modules/content-type": { 391 | "version": "1.0.5", 392 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 393 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 394 | "engines": { 395 | "node": ">= 0.6" 396 | } 397 | }, 398 | "node_modules/cookie": { 399 | "version": "0.7.2", 400 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", 401 | "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", 402 | "engines": { 403 | "node": ">= 0.6" 404 | } 405 | }, 406 | "node_modules/cookie-signature": { 407 | "version": "1.2.2", 408 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", 409 | "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", 410 | "engines": { 411 | "node": ">=6.6.0" 412 | } 413 | }, 414 | "node_modules/cors": { 415 | "version": "2.8.5", 416 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 417 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 418 | "dependencies": { 419 | "object-assign": "^4", 420 | "vary": "^1" 421 | }, 422 | "engines": { 423 | "node": ">= 0.10" 424 | } 425 | }, 426 | "node_modules/cross-spawn": { 427 | "version": "7.0.6", 428 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 429 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 430 | "dependencies": { 431 | "path-key": "^3.1.0", 432 | "shebang-command": "^2.0.0", 433 | "which": "^2.0.1" 434 | }, 435 | "engines": { 436 | "node": ">= 8" 437 | } 438 | }, 439 | "node_modules/debug": { 440 | "version": "4.4.1", 441 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", 442 | "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", 443 | "dependencies": { 444 | "ms": "^2.1.3" 445 | }, 446 | "engines": { 447 | "node": ">=6.0" 448 | }, 449 | "peerDependenciesMeta": { 450 | "supports-color": { 451 | "optional": true 452 | } 453 | } 454 | }, 455 | "node_modules/decompress-response": { 456 | "version": "6.0.0", 457 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 458 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 459 | "dependencies": { 460 | "mimic-response": "^3.1.0" 461 | }, 462 | "engines": { 463 | "node": ">=10" 464 | }, 465 | "funding": { 466 | "url": "https://github.com/sponsors/sindresorhus" 467 | } 468 | }, 469 | "node_modules/deep-extend": { 470 | "version": "0.6.0", 471 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 472 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 473 | "engines": { 474 | "node": ">=4.0.0" 475 | } 476 | }, 477 | "node_modules/delegates": { 478 | "version": "1.0.0", 479 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 480 | "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", 481 | "optional": true 482 | }, 483 | "node_modules/depd": { 484 | "version": "2.0.0", 485 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 486 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 487 | "engines": { 488 | "node": ">= 0.8" 489 | } 490 | }, 491 | "node_modules/detect-libc": { 492 | "version": "2.0.4", 493 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", 494 | "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", 495 | "engines": { 496 | "node": ">=8" 497 | } 498 | }, 499 | "node_modules/dunder-proto": { 500 | "version": "1.0.1", 501 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 502 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 503 | "dependencies": { 504 | "call-bind-apply-helpers": "^1.0.1", 505 | "es-errors": "^1.3.0", 506 | "gopd": "^1.2.0" 507 | }, 508 | "engines": { 509 | "node": ">= 0.4" 510 | } 511 | }, 512 | "node_modules/ee-first": { 513 | "version": "1.1.1", 514 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 515 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 516 | }, 517 | "node_modules/emoji-regex": { 518 | "version": "8.0.0", 519 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 520 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 521 | "optional": true 522 | }, 523 | "node_modules/encodeurl": { 524 | "version": "2.0.0", 525 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", 526 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", 527 | "engines": { 528 | "node": ">= 0.8" 529 | } 530 | }, 531 | "node_modules/encoding": { 532 | "version": "0.1.13", 533 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", 534 | "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", 535 | "optional": true, 536 | "dependencies": { 537 | "iconv-lite": "^0.6.2" 538 | } 539 | }, 540 | "node_modules/end-of-stream": { 541 | "version": "1.4.4", 542 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 543 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 544 | "dependencies": { 545 | "once": "^1.4.0" 546 | } 547 | }, 548 | "node_modules/env-paths": { 549 | "version": "2.2.1", 550 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 551 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 552 | "optional": true, 553 | "engines": { 554 | "node": ">=6" 555 | } 556 | }, 557 | "node_modules/err-code": { 558 | "version": "2.0.3", 559 | "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", 560 | "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", 561 | "optional": true 562 | }, 563 | "node_modules/es-define-property": { 564 | "version": "1.0.1", 565 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 566 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 567 | "engines": { 568 | "node": ">= 0.4" 569 | } 570 | }, 571 | "node_modules/es-errors": { 572 | "version": "1.3.0", 573 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 574 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 575 | "engines": { 576 | "node": ">= 0.4" 577 | } 578 | }, 579 | "node_modules/es-object-atoms": { 580 | "version": "1.1.1", 581 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 582 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 583 | "dependencies": { 584 | "es-errors": "^1.3.0" 585 | }, 586 | "engines": { 587 | "node": ">= 0.4" 588 | } 589 | }, 590 | "node_modules/escape-html": { 591 | "version": "1.0.3", 592 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 593 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 594 | }, 595 | "node_modules/etag": { 596 | "version": "1.8.1", 597 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 598 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 599 | "engines": { 600 | "node": ">= 0.6" 601 | } 602 | }, 603 | "node_modules/eventsource": { 604 | "version": "3.0.7", 605 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", 606 | "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", 607 | "dependencies": { 608 | "eventsource-parser": "^3.0.1" 609 | }, 610 | "engines": { 611 | "node": ">=18.0.0" 612 | } 613 | }, 614 | "node_modules/eventsource-parser": { 615 | "version": "3.0.2", 616 | "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.2.tgz", 617 | "integrity": "sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==", 618 | "engines": { 619 | "node": ">=18.0.0" 620 | } 621 | }, 622 | "node_modules/expand-template": { 623 | "version": "2.0.3", 624 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 625 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 626 | "engines": { 627 | "node": ">=6" 628 | } 629 | }, 630 | "node_modules/express": { 631 | "version": "5.1.0", 632 | "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", 633 | "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", 634 | "dependencies": { 635 | "accepts": "^2.0.0", 636 | "body-parser": "^2.2.0", 637 | "content-disposition": "^1.0.0", 638 | "content-type": "^1.0.5", 639 | "cookie": "^0.7.1", 640 | "cookie-signature": "^1.2.1", 641 | "debug": "^4.4.0", 642 | "encodeurl": "^2.0.0", 643 | "escape-html": "^1.0.3", 644 | "etag": "^1.8.1", 645 | "finalhandler": "^2.1.0", 646 | "fresh": "^2.0.0", 647 | "http-errors": "^2.0.0", 648 | "merge-descriptors": "^2.0.0", 649 | "mime-types": "^3.0.0", 650 | "on-finished": "^2.4.1", 651 | "once": "^1.4.0", 652 | "parseurl": "^1.3.3", 653 | "proxy-addr": "^2.0.7", 654 | "qs": "^6.14.0", 655 | "range-parser": "^1.2.1", 656 | "router": "^2.2.0", 657 | "send": "^1.1.0", 658 | "serve-static": "^2.2.0", 659 | "statuses": "^2.0.1", 660 | "type-is": "^2.0.1", 661 | "vary": "^1.1.2" 662 | }, 663 | "engines": { 664 | "node": ">= 18" 665 | }, 666 | "funding": { 667 | "type": "opencollective", 668 | "url": "https://opencollective.com/express" 669 | } 670 | }, 671 | "node_modules/express-rate-limit": { 672 | "version": "7.5.0", 673 | "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", 674 | "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", 675 | "engines": { 676 | "node": ">= 16" 677 | }, 678 | "funding": { 679 | "url": "https://github.com/sponsors/express-rate-limit" 680 | }, 681 | "peerDependencies": { 682 | "express": "^4.11 || 5 || ^5.0.0-beta.1" 683 | } 684 | }, 685 | "node_modules/fast-deep-equal": { 686 | "version": "3.1.3", 687 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 688 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 689 | }, 690 | "node_modules/fast-json-stable-stringify": { 691 | "version": "2.1.0", 692 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 693 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 694 | }, 695 | "node_modules/file-uri-to-path": { 696 | "version": "1.0.0", 697 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 698 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" 699 | }, 700 | "node_modules/finalhandler": { 701 | "version": "2.1.0", 702 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", 703 | "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", 704 | "dependencies": { 705 | "debug": "^4.4.0", 706 | "encodeurl": "^2.0.0", 707 | "escape-html": "^1.0.3", 708 | "on-finished": "^2.4.1", 709 | "parseurl": "^1.3.3", 710 | "statuses": "^2.0.1" 711 | }, 712 | "engines": { 713 | "node": ">= 0.8" 714 | } 715 | }, 716 | "node_modules/forwarded": { 717 | "version": "0.2.0", 718 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 719 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 720 | "engines": { 721 | "node": ">= 0.6" 722 | } 723 | }, 724 | "node_modules/fresh": { 725 | "version": "2.0.0", 726 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", 727 | "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", 728 | "engines": { 729 | "node": ">= 0.8" 730 | } 731 | }, 732 | "node_modules/fs-constants": { 733 | "version": "1.0.0", 734 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 735 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 736 | }, 737 | "node_modules/fs-minipass": { 738 | "version": "2.1.0", 739 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 740 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 741 | "dependencies": { 742 | "minipass": "^3.0.0" 743 | }, 744 | "engines": { 745 | "node": ">= 8" 746 | } 747 | }, 748 | "node_modules/fs.realpath": { 749 | "version": "1.0.0", 750 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 751 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 752 | "optional": true 753 | }, 754 | "node_modules/function-bind": { 755 | "version": "1.1.2", 756 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 757 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 758 | "funding": { 759 | "url": "https://github.com/sponsors/ljharb" 760 | } 761 | }, 762 | "node_modules/gauge": { 763 | "version": "4.0.4", 764 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", 765 | "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", 766 | "deprecated": "This package is no longer supported.", 767 | "optional": true, 768 | "dependencies": { 769 | "aproba": "^1.0.3 || ^2.0.0", 770 | "color-support": "^1.1.3", 771 | "console-control-strings": "^1.1.0", 772 | "has-unicode": "^2.0.1", 773 | "signal-exit": "^3.0.7", 774 | "string-width": "^4.2.3", 775 | "strip-ansi": "^6.0.1", 776 | "wide-align": "^1.1.5" 777 | }, 778 | "engines": { 779 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 780 | } 781 | }, 782 | "node_modules/get-intrinsic": { 783 | "version": "1.3.0", 784 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", 785 | "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 786 | "dependencies": { 787 | "call-bind-apply-helpers": "^1.0.2", 788 | "es-define-property": "^1.0.1", 789 | "es-errors": "^1.3.0", 790 | "es-object-atoms": "^1.1.1", 791 | "function-bind": "^1.1.2", 792 | "get-proto": "^1.0.1", 793 | "gopd": "^1.2.0", 794 | "has-symbols": "^1.1.0", 795 | "hasown": "^2.0.2", 796 | "math-intrinsics": "^1.1.0" 797 | }, 798 | "engines": { 799 | "node": ">= 0.4" 800 | }, 801 | "funding": { 802 | "url": "https://github.com/sponsors/ljharb" 803 | } 804 | }, 805 | "node_modules/get-proto": { 806 | "version": "1.0.1", 807 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 808 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 809 | "dependencies": { 810 | "dunder-proto": "^1.0.1", 811 | "es-object-atoms": "^1.0.0" 812 | }, 813 | "engines": { 814 | "node": ">= 0.4" 815 | } 816 | }, 817 | "node_modules/github-from-package": { 818 | "version": "0.0.0", 819 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 820 | "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" 821 | }, 822 | "node_modules/glob": { 823 | "version": "7.2.3", 824 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 825 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 826 | "deprecated": "Glob versions prior to v9 are no longer supported", 827 | "optional": true, 828 | "dependencies": { 829 | "fs.realpath": "^1.0.0", 830 | "inflight": "^1.0.4", 831 | "inherits": "2", 832 | "minimatch": "^3.1.1", 833 | "once": "^1.3.0", 834 | "path-is-absolute": "^1.0.0" 835 | }, 836 | "engines": { 837 | "node": "*" 838 | }, 839 | "funding": { 840 | "url": "https://github.com/sponsors/isaacs" 841 | } 842 | }, 843 | "node_modules/gopd": { 844 | "version": "1.2.0", 845 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 846 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 847 | "engines": { 848 | "node": ">= 0.4" 849 | }, 850 | "funding": { 851 | "url": "https://github.com/sponsors/ljharb" 852 | } 853 | }, 854 | "node_modules/graceful-fs": { 855 | "version": "4.2.11", 856 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 857 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 858 | "optional": true 859 | }, 860 | "node_modules/has-symbols": { 861 | "version": "1.1.0", 862 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 863 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 864 | "engines": { 865 | "node": ">= 0.4" 866 | }, 867 | "funding": { 868 | "url": "https://github.com/sponsors/ljharb" 869 | } 870 | }, 871 | "node_modules/has-unicode": { 872 | "version": "2.0.1", 873 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 874 | "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", 875 | "optional": true 876 | }, 877 | "node_modules/hasown": { 878 | "version": "2.0.2", 879 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 880 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 881 | "dependencies": { 882 | "function-bind": "^1.1.2" 883 | }, 884 | "engines": { 885 | "node": ">= 0.4" 886 | } 887 | }, 888 | "node_modules/http-cache-semantics": { 889 | "version": "4.2.0", 890 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", 891 | "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", 892 | "optional": true 893 | }, 894 | "node_modules/http-errors": { 895 | "version": "2.0.0", 896 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 897 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 898 | "dependencies": { 899 | "depd": "2.0.0", 900 | "inherits": "2.0.4", 901 | "setprototypeof": "1.2.0", 902 | "statuses": "2.0.1", 903 | "toidentifier": "1.0.1" 904 | }, 905 | "engines": { 906 | "node": ">= 0.8" 907 | } 908 | }, 909 | "node_modules/http-proxy-agent": { 910 | "version": "4.0.1", 911 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 912 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 913 | "optional": true, 914 | "dependencies": { 915 | "@tootallnate/once": "1", 916 | "agent-base": "6", 917 | "debug": "4" 918 | }, 919 | "engines": { 920 | "node": ">= 6" 921 | } 922 | }, 923 | "node_modules/https-proxy-agent": { 924 | "version": "5.0.1", 925 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 926 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 927 | "optional": true, 928 | "dependencies": { 929 | "agent-base": "6", 930 | "debug": "4" 931 | }, 932 | "engines": { 933 | "node": ">= 6" 934 | } 935 | }, 936 | "node_modules/humanize-ms": { 937 | "version": "1.2.1", 938 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 939 | "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", 940 | "optional": true, 941 | "dependencies": { 942 | "ms": "^2.0.0" 943 | } 944 | }, 945 | "node_modules/iconv-lite": { 946 | "version": "0.6.3", 947 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 948 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 949 | "dependencies": { 950 | "safer-buffer": ">= 2.1.2 < 3.0.0" 951 | }, 952 | "engines": { 953 | "node": ">=0.10.0" 954 | } 955 | }, 956 | "node_modules/ieee754": { 957 | "version": "1.2.1", 958 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 959 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 960 | "funding": [ 961 | { 962 | "type": "github", 963 | "url": "https://github.com/sponsors/feross" 964 | }, 965 | { 966 | "type": "patreon", 967 | "url": "https://www.patreon.com/feross" 968 | }, 969 | { 970 | "type": "consulting", 971 | "url": "https://feross.org/support" 972 | } 973 | ] 974 | }, 975 | "node_modules/imurmurhash": { 976 | "version": "0.1.4", 977 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 978 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 979 | "optional": true, 980 | "engines": { 981 | "node": ">=0.8.19" 982 | } 983 | }, 984 | "node_modules/indent-string": { 985 | "version": "4.0.0", 986 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 987 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 988 | "optional": true, 989 | "engines": { 990 | "node": ">=8" 991 | } 992 | }, 993 | "node_modules/infer-owner": { 994 | "version": "1.0.4", 995 | "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", 996 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", 997 | "optional": true 998 | }, 999 | "node_modules/inflight": { 1000 | "version": "1.0.6", 1001 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1002 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1003 | "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.", 1004 | "optional": true, 1005 | "dependencies": { 1006 | "once": "^1.3.0", 1007 | "wrappy": "1" 1008 | } 1009 | }, 1010 | "node_modules/inherits": { 1011 | "version": "2.0.4", 1012 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1013 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1014 | }, 1015 | "node_modules/ini": { 1016 | "version": "1.3.8", 1017 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1018 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 1019 | }, 1020 | "node_modules/ip-address": { 1021 | "version": "9.0.5", 1022 | "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", 1023 | "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", 1024 | "optional": true, 1025 | "dependencies": { 1026 | "jsbn": "1.1.0", 1027 | "sprintf-js": "^1.1.3" 1028 | }, 1029 | "engines": { 1030 | "node": ">= 12" 1031 | } 1032 | }, 1033 | "node_modules/ipaddr.js": { 1034 | "version": "1.9.1", 1035 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1036 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 1037 | "engines": { 1038 | "node": ">= 0.10" 1039 | } 1040 | }, 1041 | "node_modules/is-fullwidth-code-point": { 1042 | "version": "3.0.0", 1043 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1044 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1045 | "optional": true, 1046 | "engines": { 1047 | "node": ">=8" 1048 | } 1049 | }, 1050 | "node_modules/is-lambda": { 1051 | "version": "1.0.1", 1052 | "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", 1053 | "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", 1054 | "optional": true 1055 | }, 1056 | "node_modules/is-promise": { 1057 | "version": "4.0.0", 1058 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", 1059 | "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" 1060 | }, 1061 | "node_modules/isexe": { 1062 | "version": "2.0.0", 1063 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1064 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1065 | }, 1066 | "node_modules/jsbn": { 1067 | "version": "1.1.0", 1068 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", 1069 | "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", 1070 | "optional": true 1071 | }, 1072 | "node_modules/json-schema-traverse": { 1073 | "version": "0.4.1", 1074 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1075 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1076 | }, 1077 | "node_modules/lru-cache": { 1078 | "version": "6.0.0", 1079 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1080 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1081 | "optional": true, 1082 | "dependencies": { 1083 | "yallist": "^4.0.0" 1084 | }, 1085 | "engines": { 1086 | "node": ">=10" 1087 | } 1088 | }, 1089 | "node_modules/make-fetch-happen": { 1090 | "version": "9.1.0", 1091 | "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", 1092 | "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", 1093 | "optional": true, 1094 | "dependencies": { 1095 | "agentkeepalive": "^4.1.3", 1096 | "cacache": "^15.2.0", 1097 | "http-cache-semantics": "^4.1.0", 1098 | "http-proxy-agent": "^4.0.1", 1099 | "https-proxy-agent": "^5.0.0", 1100 | "is-lambda": "^1.0.1", 1101 | "lru-cache": "^6.0.0", 1102 | "minipass": "^3.1.3", 1103 | "minipass-collect": "^1.0.2", 1104 | "minipass-fetch": "^1.3.2", 1105 | "minipass-flush": "^1.0.5", 1106 | "minipass-pipeline": "^1.2.4", 1107 | "negotiator": "^0.6.2", 1108 | "promise-retry": "^2.0.1", 1109 | "socks-proxy-agent": "^6.0.0", 1110 | "ssri": "^8.0.0" 1111 | }, 1112 | "engines": { 1113 | "node": ">= 10" 1114 | } 1115 | }, 1116 | "node_modules/make-fetch-happen/node_modules/negotiator": { 1117 | "version": "0.6.4", 1118 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", 1119 | "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", 1120 | "optional": true, 1121 | "engines": { 1122 | "node": ">= 0.6" 1123 | } 1124 | }, 1125 | "node_modules/math-intrinsics": { 1126 | "version": "1.1.0", 1127 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 1128 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 1129 | "engines": { 1130 | "node": ">= 0.4" 1131 | } 1132 | }, 1133 | "node_modules/media-typer": { 1134 | "version": "1.1.0", 1135 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", 1136 | "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", 1137 | "engines": { 1138 | "node": ">= 0.8" 1139 | } 1140 | }, 1141 | "node_modules/merge-descriptors": { 1142 | "version": "2.0.0", 1143 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", 1144 | "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", 1145 | "engines": { 1146 | "node": ">=18" 1147 | }, 1148 | "funding": { 1149 | "url": "https://github.com/sponsors/sindresorhus" 1150 | } 1151 | }, 1152 | "node_modules/mime-db": { 1153 | "version": "1.54.0", 1154 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", 1155 | "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", 1156 | "engines": { 1157 | "node": ">= 0.6" 1158 | } 1159 | }, 1160 | "node_modules/mime-types": { 1161 | "version": "3.0.1", 1162 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", 1163 | "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", 1164 | "dependencies": { 1165 | "mime-db": "^1.54.0" 1166 | }, 1167 | "engines": { 1168 | "node": ">= 0.6" 1169 | } 1170 | }, 1171 | "node_modules/mimic-response": { 1172 | "version": "3.1.0", 1173 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 1174 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 1175 | "engines": { 1176 | "node": ">=10" 1177 | }, 1178 | "funding": { 1179 | "url": "https://github.com/sponsors/sindresorhus" 1180 | } 1181 | }, 1182 | "node_modules/minimatch": { 1183 | "version": "3.1.2", 1184 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1185 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1186 | "optional": true, 1187 | "dependencies": { 1188 | "brace-expansion": "^1.1.7" 1189 | }, 1190 | "engines": { 1191 | "node": "*" 1192 | } 1193 | }, 1194 | "node_modules/minimist": { 1195 | "version": "1.2.8", 1196 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1197 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1198 | "funding": { 1199 | "url": "https://github.com/sponsors/ljharb" 1200 | } 1201 | }, 1202 | "node_modules/minipass": { 1203 | "version": "3.3.6", 1204 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 1205 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 1206 | "dependencies": { 1207 | "yallist": "^4.0.0" 1208 | }, 1209 | "engines": { 1210 | "node": ">=8" 1211 | } 1212 | }, 1213 | "node_modules/minipass-collect": { 1214 | "version": "1.0.2", 1215 | "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", 1216 | "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", 1217 | "optional": true, 1218 | "dependencies": { 1219 | "minipass": "^3.0.0" 1220 | }, 1221 | "engines": { 1222 | "node": ">= 8" 1223 | } 1224 | }, 1225 | "node_modules/minipass-fetch": { 1226 | "version": "1.4.1", 1227 | "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", 1228 | "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", 1229 | "optional": true, 1230 | "dependencies": { 1231 | "minipass": "^3.1.0", 1232 | "minipass-sized": "^1.0.3", 1233 | "minizlib": "^2.0.0" 1234 | }, 1235 | "engines": { 1236 | "node": ">=8" 1237 | }, 1238 | "optionalDependencies": { 1239 | "encoding": "^0.1.12" 1240 | } 1241 | }, 1242 | "node_modules/minipass-flush": { 1243 | "version": "1.0.5", 1244 | "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", 1245 | "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", 1246 | "optional": true, 1247 | "dependencies": { 1248 | "minipass": "^3.0.0" 1249 | }, 1250 | "engines": { 1251 | "node": ">= 8" 1252 | } 1253 | }, 1254 | "node_modules/minipass-pipeline": { 1255 | "version": "1.2.4", 1256 | "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", 1257 | "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", 1258 | "optional": true, 1259 | "dependencies": { 1260 | "minipass": "^3.0.0" 1261 | }, 1262 | "engines": { 1263 | "node": ">=8" 1264 | } 1265 | }, 1266 | "node_modules/minipass-sized": { 1267 | "version": "1.0.3", 1268 | "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", 1269 | "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", 1270 | "optional": true, 1271 | "dependencies": { 1272 | "minipass": "^3.0.0" 1273 | }, 1274 | "engines": { 1275 | "node": ">=8" 1276 | } 1277 | }, 1278 | "node_modules/minizlib": { 1279 | "version": "2.1.2", 1280 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 1281 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 1282 | "dependencies": { 1283 | "minipass": "^3.0.0", 1284 | "yallist": "^4.0.0" 1285 | }, 1286 | "engines": { 1287 | "node": ">= 8" 1288 | } 1289 | }, 1290 | "node_modules/mkdirp": { 1291 | "version": "1.0.4", 1292 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1293 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 1294 | "bin": { 1295 | "mkdirp": "bin/cmd.js" 1296 | }, 1297 | "engines": { 1298 | "node": ">=10" 1299 | } 1300 | }, 1301 | "node_modules/mkdirp-classic": { 1302 | "version": "0.5.3", 1303 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1304 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 1305 | }, 1306 | "node_modules/ms": { 1307 | "version": "2.1.3", 1308 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1309 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1310 | }, 1311 | "node_modules/napi-build-utils": { 1312 | "version": "2.0.0", 1313 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", 1314 | "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" 1315 | }, 1316 | "node_modules/negotiator": { 1317 | "version": "1.0.0", 1318 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", 1319 | "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", 1320 | "engines": { 1321 | "node": ">= 0.6" 1322 | } 1323 | }, 1324 | "node_modules/node-abi": { 1325 | "version": "3.75.0", 1326 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", 1327 | "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==", 1328 | "dependencies": { 1329 | "semver": "^7.3.5" 1330 | }, 1331 | "engines": { 1332 | "node": ">=10" 1333 | } 1334 | }, 1335 | "node_modules/node-addon-api": { 1336 | "version": "7.1.1", 1337 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", 1338 | "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" 1339 | }, 1340 | "node_modules/node-gyp": { 1341 | "version": "8.4.1", 1342 | "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", 1343 | "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", 1344 | "optional": true, 1345 | "dependencies": { 1346 | "env-paths": "^2.2.0", 1347 | "glob": "^7.1.4", 1348 | "graceful-fs": "^4.2.6", 1349 | "make-fetch-happen": "^9.1.0", 1350 | "nopt": "^5.0.0", 1351 | "npmlog": "^6.0.0", 1352 | "rimraf": "^3.0.2", 1353 | "semver": "^7.3.5", 1354 | "tar": "^6.1.2", 1355 | "which": "^2.0.2" 1356 | }, 1357 | "bin": { 1358 | "node-gyp": "bin/node-gyp.js" 1359 | }, 1360 | "engines": { 1361 | "node": ">= 10.12.0" 1362 | } 1363 | }, 1364 | "node_modules/nopt": { 1365 | "version": "5.0.0", 1366 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 1367 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 1368 | "optional": true, 1369 | "dependencies": { 1370 | "abbrev": "1" 1371 | }, 1372 | "bin": { 1373 | "nopt": "bin/nopt.js" 1374 | }, 1375 | "engines": { 1376 | "node": ">=6" 1377 | } 1378 | }, 1379 | "node_modules/npmlog": { 1380 | "version": "6.0.2", 1381 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", 1382 | "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", 1383 | "deprecated": "This package is no longer supported.", 1384 | "optional": true, 1385 | "dependencies": { 1386 | "are-we-there-yet": "^3.0.0", 1387 | "console-control-strings": "^1.1.0", 1388 | "gauge": "^4.0.3", 1389 | "set-blocking": "^2.0.0" 1390 | }, 1391 | "engines": { 1392 | "node": "^12.13.0 || ^14.15.0 || >=16.0.0" 1393 | } 1394 | }, 1395 | "node_modules/object-assign": { 1396 | "version": "4.1.1", 1397 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1398 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1399 | "engines": { 1400 | "node": ">=0.10.0" 1401 | } 1402 | }, 1403 | "node_modules/object-inspect": { 1404 | "version": "1.13.4", 1405 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", 1406 | "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", 1407 | "engines": { 1408 | "node": ">= 0.4" 1409 | }, 1410 | "funding": { 1411 | "url": "https://github.com/sponsors/ljharb" 1412 | } 1413 | }, 1414 | "node_modules/on-finished": { 1415 | "version": "2.4.1", 1416 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1417 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1418 | "dependencies": { 1419 | "ee-first": "1.1.1" 1420 | }, 1421 | "engines": { 1422 | "node": ">= 0.8" 1423 | } 1424 | }, 1425 | "node_modules/once": { 1426 | "version": "1.4.0", 1427 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1428 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1429 | "dependencies": { 1430 | "wrappy": "1" 1431 | } 1432 | }, 1433 | "node_modules/p-map": { 1434 | "version": "4.0.0", 1435 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 1436 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 1437 | "optional": true, 1438 | "dependencies": { 1439 | "aggregate-error": "^3.0.0" 1440 | }, 1441 | "engines": { 1442 | "node": ">=10" 1443 | }, 1444 | "funding": { 1445 | "url": "https://github.com/sponsors/sindresorhus" 1446 | } 1447 | }, 1448 | "node_modules/parseurl": { 1449 | "version": "1.3.3", 1450 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1451 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 1452 | "engines": { 1453 | "node": ">= 0.8" 1454 | } 1455 | }, 1456 | "node_modules/path-is-absolute": { 1457 | "version": "1.0.1", 1458 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1459 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1460 | "optional": true, 1461 | "engines": { 1462 | "node": ">=0.10.0" 1463 | } 1464 | }, 1465 | "node_modules/path-key": { 1466 | "version": "3.1.1", 1467 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1468 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1469 | "engines": { 1470 | "node": ">=8" 1471 | } 1472 | }, 1473 | "node_modules/path-to-regexp": { 1474 | "version": "8.2.0", 1475 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", 1476 | "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", 1477 | "engines": { 1478 | "node": ">=16" 1479 | } 1480 | }, 1481 | "node_modules/pkce-challenge": { 1482 | "version": "5.0.0", 1483 | "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", 1484 | "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", 1485 | "engines": { 1486 | "node": ">=16.20.0" 1487 | } 1488 | }, 1489 | "node_modules/prebuild-install": { 1490 | "version": "7.1.3", 1491 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", 1492 | "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", 1493 | "dependencies": { 1494 | "detect-libc": "^2.0.0", 1495 | "expand-template": "^2.0.3", 1496 | "github-from-package": "0.0.0", 1497 | "minimist": "^1.2.3", 1498 | "mkdirp-classic": "^0.5.3", 1499 | "napi-build-utils": "^2.0.0", 1500 | "node-abi": "^3.3.0", 1501 | "pump": "^3.0.0", 1502 | "rc": "^1.2.7", 1503 | "simple-get": "^4.0.0", 1504 | "tar-fs": "^2.0.0", 1505 | "tunnel-agent": "^0.6.0" 1506 | }, 1507 | "bin": { 1508 | "prebuild-install": "bin.js" 1509 | }, 1510 | "engines": { 1511 | "node": ">=10" 1512 | } 1513 | }, 1514 | "node_modules/promise-inflight": { 1515 | "version": "1.0.1", 1516 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", 1517 | "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", 1518 | "optional": true 1519 | }, 1520 | "node_modules/promise-retry": { 1521 | "version": "2.0.1", 1522 | "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", 1523 | "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", 1524 | "optional": true, 1525 | "dependencies": { 1526 | "err-code": "^2.0.2", 1527 | "retry": "^0.12.0" 1528 | }, 1529 | "engines": { 1530 | "node": ">=10" 1531 | } 1532 | }, 1533 | "node_modules/proxy-addr": { 1534 | "version": "2.0.7", 1535 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1536 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1537 | "dependencies": { 1538 | "forwarded": "0.2.0", 1539 | "ipaddr.js": "1.9.1" 1540 | }, 1541 | "engines": { 1542 | "node": ">= 0.10" 1543 | } 1544 | }, 1545 | "node_modules/pump": { 1546 | "version": "3.0.2", 1547 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", 1548 | "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", 1549 | "dependencies": { 1550 | "end-of-stream": "^1.1.0", 1551 | "once": "^1.3.1" 1552 | } 1553 | }, 1554 | "node_modules/punycode": { 1555 | "version": "2.3.1", 1556 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1557 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1558 | "engines": { 1559 | "node": ">=6" 1560 | } 1561 | }, 1562 | "node_modules/qs": { 1563 | "version": "6.14.0", 1564 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", 1565 | "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", 1566 | "dependencies": { 1567 | "side-channel": "^1.1.0" 1568 | }, 1569 | "engines": { 1570 | "node": ">=0.6" 1571 | }, 1572 | "funding": { 1573 | "url": "https://github.com/sponsors/ljharb" 1574 | } 1575 | }, 1576 | "node_modules/range-parser": { 1577 | "version": "1.2.1", 1578 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1579 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 1580 | "engines": { 1581 | "node": ">= 0.6" 1582 | } 1583 | }, 1584 | "node_modules/raw-body": { 1585 | "version": "3.0.0", 1586 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", 1587 | "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", 1588 | "dependencies": { 1589 | "bytes": "3.1.2", 1590 | "http-errors": "2.0.0", 1591 | "iconv-lite": "0.6.3", 1592 | "unpipe": "1.0.0" 1593 | }, 1594 | "engines": { 1595 | "node": ">= 0.8" 1596 | } 1597 | }, 1598 | "node_modules/rc": { 1599 | "version": "1.2.8", 1600 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1601 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1602 | "dependencies": { 1603 | "deep-extend": "^0.6.0", 1604 | "ini": "~1.3.0", 1605 | "minimist": "^1.2.0", 1606 | "strip-json-comments": "~2.0.1" 1607 | }, 1608 | "bin": { 1609 | "rc": "cli.js" 1610 | } 1611 | }, 1612 | "node_modules/readable-stream": { 1613 | "version": "3.6.2", 1614 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 1615 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 1616 | "dependencies": { 1617 | "inherits": "^2.0.3", 1618 | "string_decoder": "^1.1.1", 1619 | "util-deprecate": "^1.0.1" 1620 | }, 1621 | "engines": { 1622 | "node": ">= 6" 1623 | } 1624 | }, 1625 | "node_modules/retry": { 1626 | "version": "0.12.0", 1627 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 1628 | "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", 1629 | "optional": true, 1630 | "engines": { 1631 | "node": ">= 4" 1632 | } 1633 | }, 1634 | "node_modules/rimraf": { 1635 | "version": "3.0.2", 1636 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1637 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1638 | "deprecated": "Rimraf versions prior to v4 are no longer supported", 1639 | "optional": true, 1640 | "dependencies": { 1641 | "glob": "^7.1.3" 1642 | }, 1643 | "bin": { 1644 | "rimraf": "bin.js" 1645 | }, 1646 | "funding": { 1647 | "url": "https://github.com/sponsors/isaacs" 1648 | } 1649 | }, 1650 | "node_modules/router": { 1651 | "version": "2.2.0", 1652 | "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", 1653 | "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", 1654 | "dependencies": { 1655 | "debug": "^4.4.0", 1656 | "depd": "^2.0.0", 1657 | "is-promise": "^4.0.0", 1658 | "parseurl": "^1.3.3", 1659 | "path-to-regexp": "^8.0.0" 1660 | }, 1661 | "engines": { 1662 | "node": ">= 18" 1663 | } 1664 | }, 1665 | "node_modules/safe-buffer": { 1666 | "version": "5.2.1", 1667 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1668 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1669 | "funding": [ 1670 | { 1671 | "type": "github", 1672 | "url": "https://github.com/sponsors/feross" 1673 | }, 1674 | { 1675 | "type": "patreon", 1676 | "url": "https://www.patreon.com/feross" 1677 | }, 1678 | { 1679 | "type": "consulting", 1680 | "url": "https://feross.org/support" 1681 | } 1682 | ] 1683 | }, 1684 | "node_modules/safer-buffer": { 1685 | "version": "2.1.2", 1686 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1687 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1688 | }, 1689 | "node_modules/semver": { 1690 | "version": "7.7.2", 1691 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", 1692 | "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", 1693 | "bin": { 1694 | "semver": "bin/semver.js" 1695 | }, 1696 | "engines": { 1697 | "node": ">=10" 1698 | } 1699 | }, 1700 | "node_modules/send": { 1701 | "version": "1.2.0", 1702 | "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", 1703 | "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", 1704 | "dependencies": { 1705 | "debug": "^4.3.5", 1706 | "encodeurl": "^2.0.0", 1707 | "escape-html": "^1.0.3", 1708 | "etag": "^1.8.1", 1709 | "fresh": "^2.0.0", 1710 | "http-errors": "^2.0.0", 1711 | "mime-types": "^3.0.1", 1712 | "ms": "^2.1.3", 1713 | "on-finished": "^2.4.1", 1714 | "range-parser": "^1.2.1", 1715 | "statuses": "^2.0.1" 1716 | }, 1717 | "engines": { 1718 | "node": ">= 18" 1719 | } 1720 | }, 1721 | "node_modules/serve-static": { 1722 | "version": "2.2.0", 1723 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", 1724 | "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", 1725 | "dependencies": { 1726 | "encodeurl": "^2.0.0", 1727 | "escape-html": "^1.0.3", 1728 | "parseurl": "^1.3.3", 1729 | "send": "^1.2.0" 1730 | }, 1731 | "engines": { 1732 | "node": ">= 18" 1733 | } 1734 | }, 1735 | "node_modules/set-blocking": { 1736 | "version": "2.0.0", 1737 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1738 | "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", 1739 | "optional": true 1740 | }, 1741 | "node_modules/setprototypeof": { 1742 | "version": "1.2.0", 1743 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1744 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1745 | }, 1746 | "node_modules/shebang-command": { 1747 | "version": "2.0.0", 1748 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1749 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1750 | "dependencies": { 1751 | "shebang-regex": "^3.0.0" 1752 | }, 1753 | "engines": { 1754 | "node": ">=8" 1755 | } 1756 | }, 1757 | "node_modules/shebang-regex": { 1758 | "version": "3.0.0", 1759 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1760 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1761 | "engines": { 1762 | "node": ">=8" 1763 | } 1764 | }, 1765 | "node_modules/side-channel": { 1766 | "version": "1.1.0", 1767 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", 1768 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 1769 | "dependencies": { 1770 | "es-errors": "^1.3.0", 1771 | "object-inspect": "^1.13.3", 1772 | "side-channel-list": "^1.0.0", 1773 | "side-channel-map": "^1.0.1", 1774 | "side-channel-weakmap": "^1.0.2" 1775 | }, 1776 | "engines": { 1777 | "node": ">= 0.4" 1778 | }, 1779 | "funding": { 1780 | "url": "https://github.com/sponsors/ljharb" 1781 | } 1782 | }, 1783 | "node_modules/side-channel-list": { 1784 | "version": "1.0.0", 1785 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", 1786 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 1787 | "dependencies": { 1788 | "es-errors": "^1.3.0", 1789 | "object-inspect": "^1.13.3" 1790 | }, 1791 | "engines": { 1792 | "node": ">= 0.4" 1793 | }, 1794 | "funding": { 1795 | "url": "https://github.com/sponsors/ljharb" 1796 | } 1797 | }, 1798 | "node_modules/side-channel-map": { 1799 | "version": "1.0.1", 1800 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", 1801 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 1802 | "dependencies": { 1803 | "call-bound": "^1.0.2", 1804 | "es-errors": "^1.3.0", 1805 | "get-intrinsic": "^1.2.5", 1806 | "object-inspect": "^1.13.3" 1807 | }, 1808 | "engines": { 1809 | "node": ">= 0.4" 1810 | }, 1811 | "funding": { 1812 | "url": "https://github.com/sponsors/ljharb" 1813 | } 1814 | }, 1815 | "node_modules/side-channel-weakmap": { 1816 | "version": "1.0.2", 1817 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", 1818 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 1819 | "dependencies": { 1820 | "call-bound": "^1.0.2", 1821 | "es-errors": "^1.3.0", 1822 | "get-intrinsic": "^1.2.5", 1823 | "object-inspect": "^1.13.3", 1824 | "side-channel-map": "^1.0.1" 1825 | }, 1826 | "engines": { 1827 | "node": ">= 0.4" 1828 | }, 1829 | "funding": { 1830 | "url": "https://github.com/sponsors/ljharb" 1831 | } 1832 | }, 1833 | "node_modules/signal-exit": { 1834 | "version": "3.0.7", 1835 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1836 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1837 | "optional": true 1838 | }, 1839 | "node_modules/simple-concat": { 1840 | "version": "1.0.1", 1841 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 1842 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 1843 | "funding": [ 1844 | { 1845 | "type": "github", 1846 | "url": "https://github.com/sponsors/feross" 1847 | }, 1848 | { 1849 | "type": "patreon", 1850 | "url": "https://www.patreon.com/feross" 1851 | }, 1852 | { 1853 | "type": "consulting", 1854 | "url": "https://feross.org/support" 1855 | } 1856 | ] 1857 | }, 1858 | "node_modules/simple-get": { 1859 | "version": "4.0.1", 1860 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 1861 | "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 1862 | "funding": [ 1863 | { 1864 | "type": "github", 1865 | "url": "https://github.com/sponsors/feross" 1866 | }, 1867 | { 1868 | "type": "patreon", 1869 | "url": "https://www.patreon.com/feross" 1870 | }, 1871 | { 1872 | "type": "consulting", 1873 | "url": "https://feross.org/support" 1874 | } 1875 | ], 1876 | "dependencies": { 1877 | "decompress-response": "^6.0.0", 1878 | "once": "^1.3.1", 1879 | "simple-concat": "^1.0.0" 1880 | } 1881 | }, 1882 | "node_modules/smart-buffer": { 1883 | "version": "4.2.0", 1884 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 1885 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 1886 | "optional": true, 1887 | "engines": { 1888 | "node": ">= 6.0.0", 1889 | "npm": ">= 3.0.0" 1890 | } 1891 | }, 1892 | "node_modules/socks": { 1893 | "version": "2.8.4", 1894 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", 1895 | "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", 1896 | "optional": true, 1897 | "dependencies": { 1898 | "ip-address": "^9.0.5", 1899 | "smart-buffer": "^4.2.0" 1900 | }, 1901 | "engines": { 1902 | "node": ">= 10.0.0", 1903 | "npm": ">= 3.0.0" 1904 | } 1905 | }, 1906 | "node_modules/socks-proxy-agent": { 1907 | "version": "6.2.1", 1908 | "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", 1909 | "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", 1910 | "optional": true, 1911 | "dependencies": { 1912 | "agent-base": "^6.0.2", 1913 | "debug": "^4.3.3", 1914 | "socks": "^2.6.2" 1915 | }, 1916 | "engines": { 1917 | "node": ">= 10" 1918 | } 1919 | }, 1920 | "node_modules/sprintf-js": { 1921 | "version": "1.1.3", 1922 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", 1923 | "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", 1924 | "optional": true 1925 | }, 1926 | "node_modules/sqlite3": { 1927 | "version": "5.1.7", 1928 | "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", 1929 | "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", 1930 | "hasInstallScript": true, 1931 | "dependencies": { 1932 | "bindings": "^1.5.0", 1933 | "node-addon-api": "^7.0.0", 1934 | "prebuild-install": "^7.1.1", 1935 | "tar": "^6.1.11" 1936 | }, 1937 | "optionalDependencies": { 1938 | "node-gyp": "8.x" 1939 | }, 1940 | "peerDependencies": { 1941 | "node-gyp": "8.x" 1942 | }, 1943 | "peerDependenciesMeta": { 1944 | "node-gyp": { 1945 | "optional": true 1946 | } 1947 | } 1948 | }, 1949 | "node_modules/ssri": { 1950 | "version": "8.0.1", 1951 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", 1952 | "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", 1953 | "optional": true, 1954 | "dependencies": { 1955 | "minipass": "^3.1.1" 1956 | }, 1957 | "engines": { 1958 | "node": ">= 8" 1959 | } 1960 | }, 1961 | "node_modules/statuses": { 1962 | "version": "2.0.1", 1963 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1964 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 1965 | "engines": { 1966 | "node": ">= 0.8" 1967 | } 1968 | }, 1969 | "node_modules/string_decoder": { 1970 | "version": "1.3.0", 1971 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1972 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1973 | "dependencies": { 1974 | "safe-buffer": "~5.2.0" 1975 | } 1976 | }, 1977 | "node_modules/string-width": { 1978 | "version": "4.2.3", 1979 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1980 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1981 | "optional": true, 1982 | "dependencies": { 1983 | "emoji-regex": "^8.0.0", 1984 | "is-fullwidth-code-point": "^3.0.0", 1985 | "strip-ansi": "^6.0.1" 1986 | }, 1987 | "engines": { 1988 | "node": ">=8" 1989 | } 1990 | }, 1991 | "node_modules/strip-ansi": { 1992 | "version": "6.0.1", 1993 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1994 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1995 | "optional": true, 1996 | "dependencies": { 1997 | "ansi-regex": "^5.0.1" 1998 | }, 1999 | "engines": { 2000 | "node": ">=8" 2001 | } 2002 | }, 2003 | "node_modules/strip-json-comments": { 2004 | "version": "2.0.1", 2005 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2006 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", 2007 | "engines": { 2008 | "node": ">=0.10.0" 2009 | } 2010 | }, 2011 | "node_modules/tar": { 2012 | "version": "6.2.1", 2013 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", 2014 | "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", 2015 | "dependencies": { 2016 | "chownr": "^2.0.0", 2017 | "fs-minipass": "^2.0.0", 2018 | "minipass": "^5.0.0", 2019 | "minizlib": "^2.1.1", 2020 | "mkdirp": "^1.0.3", 2021 | "yallist": "^4.0.0" 2022 | }, 2023 | "engines": { 2024 | "node": ">=10" 2025 | } 2026 | }, 2027 | "node_modules/tar-fs": { 2028 | "version": "2.1.3", 2029 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", 2030 | "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", 2031 | "dependencies": { 2032 | "chownr": "^1.1.1", 2033 | "mkdirp-classic": "^0.5.2", 2034 | "pump": "^3.0.0", 2035 | "tar-stream": "^2.1.4" 2036 | } 2037 | }, 2038 | "node_modules/tar-fs/node_modules/chownr": { 2039 | "version": "1.1.4", 2040 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 2041 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 2042 | }, 2043 | "node_modules/tar-stream": { 2044 | "version": "2.2.0", 2045 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 2046 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 2047 | "dependencies": { 2048 | "bl": "^4.0.3", 2049 | "end-of-stream": "^1.4.1", 2050 | "fs-constants": "^1.0.0", 2051 | "inherits": "^2.0.3", 2052 | "readable-stream": "^3.1.1" 2053 | }, 2054 | "engines": { 2055 | "node": ">=6" 2056 | } 2057 | }, 2058 | "node_modules/tar/node_modules/minipass": { 2059 | "version": "5.0.0", 2060 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", 2061 | "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", 2062 | "engines": { 2063 | "node": ">=8" 2064 | } 2065 | }, 2066 | "node_modules/toidentifier": { 2067 | "version": "1.0.1", 2068 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 2069 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 2070 | "engines": { 2071 | "node": ">=0.6" 2072 | } 2073 | }, 2074 | "node_modules/tunnel-agent": { 2075 | "version": "0.6.0", 2076 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2077 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 2078 | "dependencies": { 2079 | "safe-buffer": "^5.0.1" 2080 | }, 2081 | "engines": { 2082 | "node": "*" 2083 | } 2084 | }, 2085 | "node_modules/type-is": { 2086 | "version": "2.0.1", 2087 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", 2088 | "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", 2089 | "dependencies": { 2090 | "content-type": "^1.0.5", 2091 | "media-typer": "^1.1.0", 2092 | "mime-types": "^3.0.0" 2093 | }, 2094 | "engines": { 2095 | "node": ">= 0.6" 2096 | } 2097 | }, 2098 | "node_modules/unique-filename": { 2099 | "version": "1.1.1", 2100 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", 2101 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", 2102 | "optional": true, 2103 | "dependencies": { 2104 | "unique-slug": "^2.0.0" 2105 | } 2106 | }, 2107 | "node_modules/unique-slug": { 2108 | "version": "2.0.2", 2109 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", 2110 | "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", 2111 | "optional": true, 2112 | "dependencies": { 2113 | "imurmurhash": "^0.1.4" 2114 | } 2115 | }, 2116 | "node_modules/unpipe": { 2117 | "version": "1.0.0", 2118 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2119 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 2120 | "engines": { 2121 | "node": ">= 0.8" 2122 | } 2123 | }, 2124 | "node_modules/uri-js": { 2125 | "version": "4.4.1", 2126 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2127 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2128 | "dependencies": { 2129 | "punycode": "^2.1.0" 2130 | } 2131 | }, 2132 | "node_modules/util-deprecate": { 2133 | "version": "1.0.2", 2134 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2135 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2136 | }, 2137 | "node_modules/vary": { 2138 | "version": "1.1.2", 2139 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2140 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 2141 | "engines": { 2142 | "node": ">= 0.8" 2143 | } 2144 | }, 2145 | "node_modules/which": { 2146 | "version": "2.0.2", 2147 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2148 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2149 | "dependencies": { 2150 | "isexe": "^2.0.0" 2151 | }, 2152 | "bin": { 2153 | "node-which": "bin/node-which" 2154 | }, 2155 | "engines": { 2156 | "node": ">= 8" 2157 | } 2158 | }, 2159 | "node_modules/wide-align": { 2160 | "version": "1.1.5", 2161 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 2162 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 2163 | "optional": true, 2164 | "dependencies": { 2165 | "string-width": "^1.0.2 || 2 || 3 || 4" 2166 | } 2167 | }, 2168 | "node_modules/wrappy": { 2169 | "version": "1.0.2", 2170 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2171 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2172 | }, 2173 | "node_modules/yallist": { 2174 | "version": "4.0.0", 2175 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2176 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2177 | }, 2178 | "node_modules/zod": { 2179 | "version": "3.25.48", 2180 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.48.tgz", 2181 | "integrity": "sha512-0X1mz8FtgEIvaxGjdIImYpZEaZMrund9pGXm3M6vM7Reba0e2eI71KPjSCGXBfwKDPwPoywf6waUKc3/tFvX2Q==", 2182 | "funding": { 2183 | "url": "https://github.com/sponsors/colinhacks" 2184 | } 2185 | }, 2186 | "node_modules/zod-to-json-schema": { 2187 | "version": "3.24.5", 2188 | "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", 2189 | "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", 2190 | "peerDependencies": { 2191 | "zod": "^3.24.1" 2192 | } 2193 | } 2194 | } 2195 | } 2196 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mcp-sqlite", 3 | "version": "1.0.7", 4 | "description": "Model Context Protocol (MCP) server that provides comprehensive SQLite database interaction capabilities", 5 | "main": "mcp-sqlite-server.js", 6 | "bin": { 7 | "mcp-sqlite-server": "./mcp-sqlite-server.js" 8 | }, 9 | "type": "commonjs", 10 | "files": [ 11 | "mcp-sqlite-server.js", 12 | "README.md", 13 | "CHANGELOG.md", 14 | "LICENSE" 15 | ], 16 | "engines": { 17 | "node": ">=14.0.0" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/jparkerweb/mcp-sqlite.git" 22 | }, 23 | "homepage": "https://github.com/jparkerweb/mcp-sqlite#readme", 24 | "bugs": { 25 | "url": "https://github.com/jparkerweb/mcp-sqlite/issues", 26 | "email": "equilllabs@gmail.com" 27 | }, 28 | "author": "Justin Parker (https://www.equilllabs.com)", 29 | "license": "ISC", 30 | "scripts": { 31 | "test": "npx @modelcontextprotocol/inspector mcp-sqlite-server.js", 32 | "clean": "npx rimraf node_modules package-lock.json && npm install", 33 | "postinstall": "node -e \"console.log('\\nMCP SQLite server installed! Run with: npx mcp-sqlite-server ')\"" 34 | }, 35 | "keywords": [ 36 | "mcp", 37 | "sqlite", 38 | "database", 39 | "llm", 40 | "cursor", 41 | "windsurf", 42 | "ide", 43 | "development", 44 | "aitooling" 45 | ], 46 | "dependencies": { 47 | "@modelcontextprotocol/sdk": "^1.12.1", 48 | "sqlite3": "^5.1.7" 49 | } 50 | } 51 | --------------------------------------------------------------------------------