@pilat/mcp-datalink 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +19 -97
  2. package/dist/adapters/factory.d.ts +0 -4
  3. package/dist/adapters/factory.d.ts.map +1 -1
  4. package/dist/adapters/factory.js +3 -8
  5. package/dist/adapters/factory.js.map +1 -1
  6. package/dist/adapters/mysql/adapter.d.ts +2 -31
  7. package/dist/adapters/mysql/adapter.d.ts.map +1 -1
  8. package/dist/adapters/mysql/adapter.js +27 -283
  9. package/dist/adapters/mysql/adapter.js.map +1 -1
  10. package/dist/adapters/postgresql/adapter.d.ts +2 -22
  11. package/dist/adapters/postgresql/adapter.d.ts.map +1 -1
  12. package/dist/adapters/postgresql/adapter.js +18 -175
  13. package/dist/adapters/postgresql/adapter.js.map +1 -1
  14. package/dist/adapters/sqlite/adapter.d.ts +3 -25
  15. package/dist/adapters/sqlite/adapter.d.ts.map +1 -1
  16. package/dist/adapters/sqlite/adapter.js +65 -364
  17. package/dist/adapters/sqlite/adapter.js.map +1 -1
  18. package/dist/adapters/sqlite/pragma-check.d.ts +19 -0
  19. package/dist/adapters/sqlite/pragma-check.d.ts.map +1 -0
  20. package/dist/adapters/sqlite/pragma-check.js +25 -0
  21. package/dist/adapters/sqlite/pragma-check.js.map +1 -0
  22. package/dist/adapters/sqlite/url-parser.d.ts +34 -0
  23. package/dist/adapters/sqlite/url-parser.d.ts.map +1 -0
  24. package/dist/adapters/sqlite/url-parser.js +73 -0
  25. package/dist/adapters/sqlite/url-parser.js.map +1 -0
  26. package/dist/adapters/types.d.ts +10 -113
  27. package/dist/adapters/types.d.ts.map +1 -1
  28. package/dist/config/loader.d.ts.map +1 -1
  29. package/dist/config/loader.js.map +1 -1
  30. package/dist/server.d.ts.map +1 -1
  31. package/dist/server.js +31 -20
  32. package/dist/server.js.map +1 -1
  33. package/dist/tools/describe-table.d.ts +5 -6
  34. package/dist/tools/describe-table.d.ts.map +1 -1
  35. package/dist/tools/describe-table.js +65 -9
  36. package/dist/tools/describe-table.js.map +1 -1
  37. package/dist/tools/execute.d.ts +5 -6
  38. package/dist/tools/execute.d.ts.map +1 -1
  39. package/dist/tools/execute.js +13 -11
  40. package/dist/tools/execute.js.map +1 -1
  41. package/dist/tools/explain.d.ts +5 -10
  42. package/dist/tools/explain.d.ts.map +1 -1
  43. package/dist/tools/explain.js +25 -26
  44. package/dist/tools/explain.js.map +1 -1
  45. package/dist/tools/list-databases.d.ts +5 -7
  46. package/dist/tools/list-databases.d.ts.map +1 -1
  47. package/dist/tools/list-databases.js +31 -0
  48. package/dist/tools/list-databases.js.map +1 -1
  49. package/dist/tools/list-tables.d.ts +5 -10
  50. package/dist/tools/list-tables.d.ts.map +1 -1
  51. package/dist/tools/list-tables.js +27 -9
  52. package/dist/tools/list-tables.js.map +1 -1
  53. package/dist/tools/query.d.ts +1 -6
  54. package/dist/tools/query.d.ts.map +1 -1
  55. package/dist/tools/query.js +7 -27
  56. package/dist/tools/query.js.map +1 -1
  57. package/dist/types.d.ts +39 -5
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/utils/formatter.d.ts +7 -4
  60. package/dist/utils/formatter.d.ts.map +1 -1
  61. package/dist/utils/formatter.js +20 -10
  62. package/dist/utils/formatter.js.map +1 -1
  63. package/dist/utils/sql-parser.d.ts +51 -0
  64. package/dist/utils/sql-parser.d.ts.map +1 -0
  65. package/dist/utils/sql-parser.js +310 -0
  66. package/dist/utils/sql-parser.js.map +1 -0
  67. package/dist/utils/truncate.d.ts +4 -13
  68. package/dist/utils/truncate.d.ts.map +1 -1
  69. package/dist/utils/truncate.js +38 -18
  70. package/dist/utils/truncate.js.map +1 -1
  71. package/dist/utils/validation.d.ts +35 -0
  72. package/dist/utils/validation.d.ts.map +1 -0
  73. package/dist/utils/validation.js +89 -0
  74. package/dist/utils/validation.js.map +1 -0
  75. package/package.json +10 -11
package/README.md CHANGED
@@ -1,48 +1,12 @@
1
- <h1 align="center">MCP Datalink</h1>
1
+ # @pilat/mcp-datalink
2
2
 
3
- <p align="center">
4
- <strong>Secure database access for AI assistants via Model Context Protocol</strong>
5
- </p>
6
-
7
- <p align="center">
8
- <a href="https://www.npmjs.com/package/@pilat/mcp-datalink"><img src="https://img.shields.io/npm/v/@pilat/mcp-datalink.svg?style=flat-square&color=blue" alt="npm version" /></a>
9
- <a href="https://www.npmjs.com/package/@pilat/mcp-datalink"><img src="https://img.shields.io/npm/dm/@pilat/mcp-datalink.svg?style=flat-square&color=green" alt="npm downloads" /></a>
10
- <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square" alt="License: MIT" /></a>
11
- <a href="https://github.com/pilat/mcp-datalink"><img src="https://img.shields.io/github/stars/pilat/mcp-datalink?style=flat-square&color=orange" alt="GitHub stars" /></a>
12
- <img src="https://img.shields.io/badge/Node.js-20+-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js 20+" />
13
- </p>
14
-
15
- <p align="center">
16
- <a href="#installation">Installation</a> |
17
- <a href="#supported-databases">Databases</a> |
18
- <a href="#available-tools">Tools</a> |
19
- <a href="#security">Security</a>
20
- </p>
21
-
22
- ---
23
-
24
- MCP Datalink is an [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that gives AI assistants secure, read/write access to your databases. Connect your favorite AI tools to PostgreSQL, MySQL, or SQLite with enterprise-grade security controls.
3
+ MCP server for PostgreSQL, MySQL, and SQLite. Gives AI assistants secure database access via [Model Context Protocol](https://modelcontextprotocol.io).
25
4
 
26
5
  ```
27
- AI Assistant <--> MCP Datalink <--> Your Databases
6
+ npx @pilat/mcp-datalink
28
7
  ```
29
8
 
30
- ## Why MCP Datalink?
31
-
32
- - **Universal Compatibility** - Works with any MCP-compatible client: Claude Desktop, Claude Code, Cursor, Cline, and more
33
- - **Multi-Database Support** - Connect PostgreSQL, MySQL, and SQLite simultaneously
34
- - **Security-First Design** - Prepared statements, query validation, readonly modes, and DDL blocking
35
- - **Context-Aware Output** - Smart truncation prevents context overflow in AI conversations
36
- - **Zero-Install Option** - Run directly with `npx` - no global installation required
37
- - **Production Ready** - Battle-tested with comprehensive test coverage
38
-
39
- ## Supported Databases
40
-
41
- | Database | Status | Driver |
42
- |----------|--------|--------|
43
- | <img src="https://img.shields.io/badge/PostgreSQL-4169E1?style=flat-square&logo=postgresql&logoColor=white" alt="PostgreSQL" /> | Stable | node-postgres |
44
- | <img src="https://img.shields.io/badge/MySQL-4479A1?style=flat-square&logo=mysql&logoColor=white" alt="MySQL" /> | Stable | mysql2 |
45
- | <img src="https://img.shields.io/badge/SQLite-003B57?style=flat-square&logo=sqlite&logoColor=white" alt="SQLite" /> | Stable | better-sqlite3 |
9
+ Works with Claude Desktop, Claude Code, Cursor, Cline, and any MCP-compatible client.
46
10
 
47
11
  ## Installation
48
12
 
@@ -67,68 +31,26 @@ Add to your MCP client config:
67
31
  | `DATALINK_{NAME}_URL` | Connection URL (creates database named `{name}`) |
68
32
  | `DATALINK_{NAME}_READONLY` | Set to `true` to block writes |
69
33
 
70
- **Config file locations:**
71
-
72
- | Client | Path |
73
- |--------|------|
74
- | Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
75
- | Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
76
- | Claude Code | `~/.claude/settings.json` |
77
- | Cursor | Settings > MCP |
78
- | Cline | VS Code settings (`cline.mcpServers`) |
79
-
80
- ## Available Tools
34
+ **Config locations:** Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json`), Claude Code (`~/.claude/settings.json`), Cursor (Settings > MCP), Cline (`cline.mcpServers` in VS Code settings).
81
35
 
82
- | Tool | Description | Example Use Case |
83
- |------|-------------|------------------|
84
- | `list_databases` | List all configured database connections | "What databases do I have access to?" |
85
- | `list_tables` | List tables with row estimates and types | "Show me all tables in the main database" |
86
- | `describe_table` | Get detailed schema information | "What columns does the users table have?" |
87
- | `query` | Execute SELECT queries (returns Markdown) | "Find all users created this month" |
88
- | `execute` | Execute INSERT/UPDATE/DELETE | "Update the user's email address" |
89
- | `explain` | Show query execution plans | "Why is this query slow?" |
36
+ ## Tools
90
37
 
91
- ### Example Interaction
92
-
93
- ```
94
- You: "What tables are in my database?"
95
- AI: Let me check...
96
- [Uses list_tables tool]
97
-
98
- Found 5 tables:
99
- - users (15,234 rows)
100
- - orders (48,291 rows)
101
- - products (1,205 rows)
102
- - categories (24 rows)
103
- - order_items (142,891 rows)
104
- ```
38
+ | Tool | Description |
39
+ |------|-------------|
40
+ | `list_databases` | List configured database connections |
41
+ | `list_tables` | List tables with row counts |
42
+ | `describe_table` | Get schema, indexes, foreign keys |
43
+ | `query` | Run SELECT queries |
44
+ | `execute` | Run INSERT/UPDATE/DELETE |
45
+ | `explain` | Show query execution plans |
105
46
 
106
47
  ## Security
107
48
 
108
- MCP Datalink is designed with security as a core principle:
109
-
110
- | Feature | Description |
111
- |---------|-------------|
112
- | **Prepared Statements** | All queries use parameterized queries to prevent SQL injection |
113
- | **Query Validation** | SQL parser validates and restricts query types |
114
- | **Single Statement Only** | Multi-statement queries are rejected |
115
- | **DDL Blocking** | CREATE, DROP, ALTER, TRUNCATE are forbidden |
116
- | **Readonly Mode** | Per-connection write protection |
117
- | **Connection Isolation** | Fresh connection per request, no connection reuse |
118
- | **Output Limits** | Prevents context overflow with configurable size limits |
119
-
120
- ### Output Limits
121
-
122
- To prevent overwhelming AI context windows, all outputs are automatically limited:
123
-
124
- | Parameter | Default | Maximum |
125
- |-----------|---------|---------|
126
- | `maxRows` | 100 | 500 |
127
- | `maxCellLength` | 500 chars | 1,000 chars |
128
- | `maxTotalSize` | 64 KB | 256 KB |
129
- | `maxColumns` | 50 | 100 |
130
-
131
- When limits are exceeded, responses include `truncated: true` with pagination hints.
49
+ - Prepared statements only (no SQL injection)
50
+ - Single statement per query (no chaining)
51
+ - DDL blocked (no DROP, ALTER, TRUNCATE)
52
+ - Readonly mode per connection
53
+ - Output truncation (100 rows, 64KB max)
132
54
 
133
55
  ## License
134
56
 
@@ -2,10 +2,6 @@
2
2
  * Database Adapter Factory
3
3
  *
4
4
  * Creates the appropriate database adapter based on connection URL scheme.
5
- *
6
- * Phase 1: PostgreSQL - DONE
7
- * Phase 2: MySQL - DONE
8
- * Phase 3: SQLite - DONE
9
5
  */
10
6
  import type { DatabaseAdapter } from './types.js';
11
7
  import type { DatabaseConfig, DefaultsConfig } from '../types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA+ElE;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,GACvB,eAAe,CASjB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQlD"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgFlE;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,GACvB,eAAe,CASjB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD"}
@@ -2,13 +2,9 @@
2
2
  * Database Adapter Factory
3
3
  *
4
4
  * Creates the appropriate database adapter based on connection URL scheme.
5
- *
6
- * Phase 1: PostgreSQL - DONE
7
- * Phase 2: MySQL - DONE
8
- * Phase 3: SQLite - DONE
9
5
  */
10
- import { PostgreSqlAdapter } from './postgresql/adapter.js';
11
6
  import { MySqlAdapter } from './mysql/adapter.js';
7
+ import { PostgreSqlAdapter } from './postgresql/adapter.js';
12
8
  import { SqliteAdapter } from './sqlite/adapter.js';
13
9
  import { DbMcpError, ErrorCode } from '../utils/errors.js';
14
10
  /**
@@ -103,9 +99,8 @@ export function isSupportedUrl(url) {
103
99
  */
104
100
  export function isImplemented(url) {
105
101
  try {
106
- const scheme = detectScheme(url);
107
- // All three database types are now implemented (Phase 1-3)
108
- return scheme === 'postgresql' || scheme === 'mysql' || scheme === 'sqlite';
102
+ detectScheme(url);
103
+ return true;
109
104
  }
110
105
  catch {
111
106
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAO3D;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,2CAA2C;IAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACrE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gEAAgE;IAChE,IACE,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACvB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EACxB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,UAAU,CAClB,SAAS,CAAC,cAAc,EACxB,gCAAgC,GAAG,IAAI;QACrC,oEAAoE,EACtE,EAAE,GAAG,EAAE,CACR,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CACxB,MAAqB,EACrB,MAAsB;IAEtB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEvC,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAElC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAEnC,OAAO,CAAC,CAAC,CAAC;YACR,8BAA8B;YAC9B,MAAM,WAAW,GAAU,MAAM,CAAC;YAClC,MAAM,IAAI,UAAU,CAClB,SAAS,CAAC,cAAc,EACxB,+BAA+B,WAAW,EAAE,CAC7C,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAwB,EACxB,QAAwB;IAExB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAkB;QAC5B,QAAQ;QACR,QAAQ;KACT,CAAC;IAEF,OAAO,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,2DAA2D;QAC3D,OAAO,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAO3D;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,2CAA2C;IAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACrE,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gEAAgE;IAChE,IACE,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACvB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EACxB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,UAAU,CAClB,SAAS,CAAC,cAAc,EACxB,gCAAgC,GAAG,IAAI;QACrC,oEAAoE,EACtE,EAAE,GAAG,EAAE,CACR,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CACxB,MAAqB,EACrB,MAAsB;IAEtB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEvC,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAElC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAEnC,OAAO,CAAC,CAAC,CAAC;YACR,8BAA8B;YAC9B,MAAM,WAAW,GAAU,MAAM,CAAC;YAClC,MAAM,IAAI,UAAU,CAClB,SAAS,CAAC,cAAc,EACxB,+BAA+B,WAAW,EAAE,CAC7C,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAwB,EACxB,QAAwB;IAExB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAkB;QAC5B,QAAQ;QACR,QAAQ;KACT,CAAC;IAEF,OAAO,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -4,16 +4,8 @@
4
4
  * Implements DatabaseAdapter interface for MySQL databases.
5
5
  * Uses mysql2/promise driver with per-request connection recycling.
6
6
  */
7
- import type { DatabaseAdapter, AdapterConnection, AdapterConfig } from '../types.js';
7
+ import type { AdapterConfig, AdapterConnection, DatabaseAdapter } from '../types.js';
8
8
  import type { ParsedQuery } from '../../types.js';
9
- /**
10
- * Strip SQL comments from a query
11
- */
12
- declare function stripComments(sql: string): string;
13
- /**
14
- * String-aware statement splitting
15
- */
16
- declare function splitStatements(sql: string): string[];
17
9
  /**
18
10
  * MySQL database adapter
19
11
  *
@@ -24,38 +16,17 @@ export declare class MySqlAdapter implements DatabaseAdapter {
24
16
  private readonly connectionUrl;
25
17
  private readonly timeout;
26
18
  constructor(config: AdapterConfig);
27
- /**
28
- * Get the default schema name for MySQL (database name from URL)
29
- */
30
19
  getDefaultSchema(): string;
31
- /**
32
- * Parse and validate a SQL query
33
- */
34
20
  parseQuery(sql: string): ParsedQuery;
35
- /**
36
- * Inject a LIMIT clause into a SELECT query if it doesn't have one
37
- */
38
21
  injectLimit(sql: string, limit: number): string;
39
- /**
40
- * Validate that a SQL query is appropriate for a specific tool
41
- */
42
22
  validateQueryForTool(sql: string, tool: 'query' | 'execute'): void;
43
- /**
44
- * Get the EXPLAIN prefix for MySQL
45
- */
46
23
  getExplainPrefix(analyze: boolean): string;
47
- /**
48
- * Convert PostgreSQL-style placeholders ($1, $2) to MySQL-style (?)
49
- */
24
+ /** Convert $1, $2 placeholders to ? for MySQL */
50
25
  convertPlaceholders(sql: string): string;
51
26
  /**
52
27
  * Execute a function with a managed MySQL connection
53
28
  */
54
29
  withConnection<T>(fn: (conn: AdapterConnection) => Promise<T>): Promise<T>;
55
- /**
56
- * Clean up resources (no persistent resources in this adapter)
57
- */
58
30
  dispose(): Promise<void>;
59
31
  }
60
- export { stripComments, splitStatements };
61
32
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/mysql/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAEjB,aAAa,EAEd,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,WAAW,EAOZ,MAAM,gBAAgB,CAAC;AA6CxB;;GAEG;AACH,iBAAS,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA0E1C;AAED;;GAEG;AACH,iBAAS,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAwD9C;AAgED;;;;GAIG;AACH,qBAAa,YAAa,YAAW,eAAe;IAClD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa;IAKjC;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAa1B;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAsDpC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAQ/C;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAyClE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAI1C;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIxC;;OAEG;IACG,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA0ChF;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B;AAsND,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/mysql/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,eAAe,EAGhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAIV,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAqDxB;;;;GAIG;AACH,qBAAa,YAAa,YAAW,eAAe;IAClD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,aAAa;IAKjC,gBAAgB,IAAI,MAAM;IAa1B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAiBpC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/C,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAKlE,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAI1C,iDAAiD;IACjD,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIxC;;OAEG;IACG,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqC1E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}