@ibm/ibmi-mcp-server 0.2.0 → 0.3.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.
- package/README.md +140 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +14 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/resolver.d.ts.map +1 -1
- package/dist/config/resolver.js.map +1 -1
- package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts +80 -0
- package/dist/ibmi-mcp-server/tools/executeSql.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/executeSql.tool.js +356 -0
- package/dist/ibmi-mcp-server/tools/executeSql.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql.tool.d.ts +36 -0
- package/dist/ibmi-mcp-server/tools/generateSql.tool.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/generateSql.tool.js +281 -0
- package/dist/ibmi-mcp-server/tools/generateSql.tool.js.map +1 -0
- package/dist/ibmi-mcp-server/tools/index.d.ts +85 -0
- package/dist/ibmi-mcp-server/tools/index.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/tools/index.js +21 -0
- package/dist/ibmi-mcp-server/tools/index.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts +9 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/configParser.js +58 -0
- package/dist/ibmi-mcp-server/utils/config/configParser.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts +4 -4
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js +7 -8
- package/dist/ibmi-mcp-server/utils/config/toolDefinitions.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts +0 -8
- package/dist/ibmi-mcp-server/utils/config/toolFactory.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js +0 -31
- package/dist/ibmi-mcp-server/utils/config/toolFactory.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js +2 -2
- package/dist/ibmi-mcp-server/utils/config/toolsetManager.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/language/document.d.ts +26 -0
- package/dist/ibmi-mcp-server/utils/language/document.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/document.js +318 -0
- package/dist/ibmi-mcp-server/utils/language/document.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/statement.d.ts +43 -0
- package/dist/ibmi-mcp-server/utils/language/statement.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/statement.js +796 -0
- package/dist/ibmi-mcp-server/utils/language/statement.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/tokens.d.ts +32 -0
- package/dist/ibmi-mcp-server/utils/language/tokens.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/tokens.js +532 -0
- package/dist/ibmi-mcp-server/utils/language/tokens.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/types.d.ts +138 -0
- package/dist/ibmi-mcp-server/utils/language/types.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/language/types.js +93 -0
- package/dist/ibmi-mcp-server/utils/language/types.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.d.ts +48 -0
- package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.js +93 -0
- package/dist/ibmi-mcp-server/utils/security/ibmiSqlParser.js.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts +35 -59
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.d.ts.map +1 -1
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js +108 -288
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidator.js.map +1 -1
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.d.ts +54 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.d.ts.map +1 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.js +91 -0
- package/dist/ibmi-mcp-server/utils/security/sqlSecurityValidatorFallback.js.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +13 -2
- package/dist/mcp-server/tools/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/index.js +29 -9
- package/dist/mcp-server/tools/index.js.map +1 -1
- package/dist/mcp-server/tools/utils/index.d.ts +7 -0
- package/dist/mcp-server/tools/utils/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/index.js +7 -0
- package/dist/mcp-server/tools/utils/index.js.map +1 -0
- package/dist/mcp-server/tools/utils/tool-factory.d.ts +129 -0
- package/dist/mcp-server/tools/utils/tool-factory.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/tool-factory.js +179 -0
- package/dist/mcp-server/tools/utils/tool-factory.js.map +1 -0
- package/dist/mcp-server/tools/utils/types.d.ts +117 -0
- package/dist/mcp-server/tools/utils/types.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/types.js +11 -0
- package/dist/mcp-server/tools/utils/types.js.map +1 -0
- package/dist/mcp-server/transports/core/cleanupTransformStream.d.ts +26 -0
- package/dist/mcp-server/transports/core/cleanupTransformStream.d.ts.map +1 -0
- package/dist/mcp-server/transports/core/cleanupTransformStream.js +60 -0
- package/dist/mcp-server/transports/core/cleanupTransformStream.js.map +1 -0
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts +1 -1
- package/dist/mcp-server/transports/core/statefulTransportManager.d.ts.map +1 -1
- package/dist/mcp-server/transports/core/statefulTransportManager.js +50 -40
- package/dist/mcp-server/transports/core/statefulTransportManager.js.map +1 -1
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts +2 -13
- package/dist/mcp-server/transports/core/statelessTransportManager.d.ts.map +1 -1
- package/dist/mcp-server/transports/core/statelessTransportManager.js +35 -62
- package/dist/mcp-server/transports/core/statelessTransportManager.js.map +1 -1
- package/dist/mcp-server/transports/core/transportRequest.d.ts +1 -2
- package/dist/mcp-server/transports/core/transportRequest.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js +1 -3
- package/dist/mcp-server/transports/http/mcpTransportMiddleware.js.map +1 -1
- package/package.json +21 -22
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts +0 -9
- package/dist/ibmi-mcp-server/tools/executeSql/index.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/index.js +0 -9
- package/dist/ibmi-mcp-server/tools/executeSql/index.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts +0 -51
- package/dist/ibmi-mcp-server/tools/executeSql/logic.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js +0 -179
- package/dist/ibmi-mcp-server/tools/executeSql/logic.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts +0 -52
- package/dist/ibmi-mcp-server/tools/executeSql/registration.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js +0 -161
- package/dist/ibmi-mcp-server/tools/executeSql/registration.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts +0 -13
- package/dist/ibmi-mcp-server/tools/generateSql/index.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/index.js +0 -13
- package/dist/ibmi-mcp-server/tools/generateSql/index.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts +0 -64
- package/dist/ibmi-mcp-server/tools/generateSql/logic.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js +0 -190
- package/dist/ibmi-mcp-server/tools/generateSql/logic.js.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts +0 -18
- package/dist/ibmi-mcp-server/tools/generateSql/registration.d.ts.map +0 -1
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js +0 -64
- package/dist/ibmi-mcp-server/tools/generateSql/registration.js.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts +0 -8
- package/dist/mcp-server/tools/catFactFetcher/index.d.ts.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/index.js +0 -8
- package/dist/mcp-server/tools/catFactFetcher/index.js.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts +0 -52
- package/dist/mcp-server/tools/catFactFetcher/logic.d.ts.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/logic.js +0 -95
- package/dist/mcp-server/tools/catFactFetcher/logic.js.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts +0 -9
- package/dist/mcp-server/tools/catFactFetcher/registration.d.ts.map +0 -1
- package/dist/mcp-server/tools/catFactFetcher/registration.js +0 -43
- package/dist/mcp-server/tools/catFactFetcher/registration.js.map +0 -1
- package/dist/mcp-server/tools/echoTool/index.d.ts +0 -13
- package/dist/mcp-server/tools/echoTool/index.d.ts.map +0 -1
- package/dist/mcp-server/tools/echoTool/index.js +0 -13
- package/dist/mcp-server/tools/echoTool/index.js.map +0 -1
- package/dist/mcp-server/tools/echoTool/logic.d.ts +0 -69
- package/dist/mcp-server/tools/echoTool/logic.d.ts.map +0 -1
- package/dist/mcp-server/tools/echoTool/logic.js +0 -119
- package/dist/mcp-server/tools/echoTool/logic.js.map +0 -1
- package/dist/mcp-server/tools/echoTool/registration.d.ts +0 -9
- package/dist/mcp-server/tools/echoTool/registration.d.ts.map +0 -1
- package/dist/mcp-server/tools/echoTool/registration.js +0 -45
- package/dist/mcp-server/tools/echoTool/registration.js.map +0 -1
- package/dist/mcp-server/tools/imageTest/index.d.ts +0 -7
- package/dist/mcp-server/tools/imageTest/index.d.ts.map +0 -1
- package/dist/mcp-server/tools/imageTest/index.js +0 -7
- package/dist/mcp-server/tools/imageTest/index.js.map +0 -1
- package/dist/mcp-server/tools/imageTest/logic.d.ts +0 -27
- package/dist/mcp-server/tools/imageTest/logic.d.ts.map +0 -1
- package/dist/mcp-server/tools/imageTest/logic.js +0 -44
- package/dist/mcp-server/tools/imageTest/logic.js.map +0 -1
- package/dist/mcp-server/tools/imageTest/registration.d.ts +0 -9
- package/dist/mcp-server/tools/imageTest/registration.d.ts.map +0 -1
- package/dist/mcp-server/tools/imageTest/registration.js +0 -49
- package/dist/mcp-server/tools/imageTest/registration.js.map +0 -1
- package/dist/mcp-server/tools/utils/tool-utils.d.ts +0 -43
- package/dist/mcp-server/tools/utils/tool-utils.d.ts.map +0 -1
- package/dist/mcp-server/tools/utils/tool-utils.js +0 -44
- package/dist/mcp-server/tools/utils/tool-utils.js.map +0 -1
- package/dist/mcp-server/transports/core/headerUtils.d.ts +0 -27
- package/dist/mcp-server/transports/core/headerUtils.d.ts.map +0 -1
- package/dist/mcp-server/transports/core/headerUtils.js +0 -53
- package/dist/mcp-server/transports/core/headerUtils.js.map +0 -1
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts +0 -77
- package/dist/mcp-server/transports/core/honoNodeBridge.d.ts.map +0 -1
- package/dist/mcp-server/transports/core/honoNodeBridge.js +0 -150
- package/dist/mcp-server/transports/core/honoNodeBridge.js.map +0 -1
- package/dist/services/duck-db/duckDBConnectionManager.d.ts +0 -55
- package/dist/services/duck-db/duckDBConnectionManager.d.ts.map +0 -1
- package/dist/services/duck-db/duckDBConnectionManager.js +0 -184
- package/dist/services/duck-db/duckDBConnectionManager.js.map +0 -1
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts +0 -18
- package/dist/services/duck-db/duckDBQueryExecutor.d.ts.map +0 -1
- package/dist/services/duck-db/duckDBQueryExecutor.js +0 -115
- package/dist/services/duck-db/duckDBQueryExecutor.js.map +0 -1
- package/dist/services/duck-db/duckDBService.d.ts +0 -27
- package/dist/services/duck-db/duckDBService.d.ts.map +0 -1
- package/dist/services/duck-db/duckDBService.js +0 -151
- package/dist/services/duck-db/duckDBService.js.map +0 -1
- package/dist/services/duck-db/types.d.ts +0 -135
- package/dist/services/duck-db/types.d.ts.map +0 -1
- package/dist/services/duck-db/types.js +0 -6
- package/dist/services/duck-db/types.js.map +0 -1
- package/dist/services/llm-providers/openRouterProvider.d.ts +0 -36
- package/dist/services/llm-providers/openRouterProvider.d.ts.map +0 -1
- package/dist/services/llm-providers/openRouterProvider.js +0 -235
- package/dist/services/llm-providers/openRouterProvider.js.map +0 -1
- package/dist/services/supabase/supabaseClient.d.ts +0 -25
- package/dist/services/supabase/supabaseClient.d.ts.map +0 -1
- package/dist/services/supabase/supabaseClient.js +0 -68
- package/dist/services/supabase/supabaseClient.js.map +0 -1
- package/dist/storage/duckdbExample.d.ts +0 -8
- package/dist/storage/duckdbExample.d.ts.map +0 -1
- package/dist/storage/duckdbExample.js +0 -197
- package/dist/storage/duckdbExample.js.map +0 -1
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Provides a high-fidelity bridge between the MCP SDK's Node.js-style
|
|
3
|
-
* streamable HTTP transport and Hono's Web Standards-based streaming response.
|
|
4
|
-
* This class is essential for adapting the Node.js `http.ServerResponse` API
|
|
5
|
-
* to a format consumable by modern web frameworks.
|
|
6
|
-
* @module src/mcp-server/transports/core/honoNodeBridge
|
|
7
|
-
*/
|
|
8
|
-
import { PassThrough } from "stream";
|
|
9
|
-
import type { OutgoingHttpHeaders } from "http";
|
|
10
|
-
/**
|
|
11
|
-
* A mock `http.ServerResponse` that pipes all written data to a `PassThrough` stream.
|
|
12
|
-
*
|
|
13
|
-
* This class serves as a critical compatibility layer, emulating the behavior of a
|
|
14
|
-
* Node.js `ServerResponse` to capture status codes, headers, and the response body.
|
|
15
|
-
* The captured data can then be used to construct a Web-standard `Response` object,
|
|
16
|
-
* for instance in a Hono application. It pays close attention to the timing of when
|
|
17
|
-
* headers are considered "sent" to mimic Node.js behavior accurately.
|
|
18
|
-
*/
|
|
19
|
-
export declare class HonoStreamResponse extends PassThrough {
|
|
20
|
-
statusCode: number;
|
|
21
|
-
headers: OutgoingHttpHeaders;
|
|
22
|
-
private _headersSent;
|
|
23
|
-
constructor();
|
|
24
|
-
/**
|
|
25
|
-
* A getter that reports whether the headers have been sent.
|
|
26
|
-
* In this emulation, headers are considered sent the first time `write()` or `end()` is called.
|
|
27
|
-
*/
|
|
28
|
-
get headersSent(): boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Sets the status code and headers for the response, mimicking `http.ServerResponse.writeHead`.
|
|
31
|
-
*
|
|
32
|
-
* @param statusCode - The HTTP status code.
|
|
33
|
-
* @param statusMessageOrHeaders - An optional status message (string) or headers object.
|
|
34
|
-
* @param headers - An optional headers object, used if the second argument is a status message.
|
|
35
|
-
* @returns The instance of the class for chaining.
|
|
36
|
-
*/
|
|
37
|
-
writeHead(statusCode: number, statusMessageOrHeaders?: string | OutgoingHttpHeaders, headers?: OutgoingHttpHeaders): this;
|
|
38
|
-
/**
|
|
39
|
-
* Sets a single header value.
|
|
40
|
-
*
|
|
41
|
-
* @param name - The name of the header.
|
|
42
|
-
* @param value - The value of the header.
|
|
43
|
-
* @returns The instance of the class for chaining.
|
|
44
|
-
*/
|
|
45
|
-
setHeader(name: string, value: string | number | string[]): this;
|
|
46
|
-
/**
|
|
47
|
-
* Gets a header that has been queued for the response.
|
|
48
|
-
* @param name - The name of the header.
|
|
49
|
-
* @returns The value of the header, or undefined if not set.
|
|
50
|
-
*/
|
|
51
|
-
getHeader(name: string): string | number | string[] | undefined;
|
|
52
|
-
/**
|
|
53
|
-
* Returns a copy of the current outgoing headers.
|
|
54
|
-
*/
|
|
55
|
-
getHeaders(): OutgoingHttpHeaders;
|
|
56
|
-
/**
|
|
57
|
-
* Removes a header that has been queued for the response.
|
|
58
|
-
* @param name - The name of the header to remove.
|
|
59
|
-
*/
|
|
60
|
-
removeHeader(name: string): void;
|
|
61
|
-
/**
|
|
62
|
-
* A private helper to mark headers as sent. This is called implicitly
|
|
63
|
-
* before any part of the body is written.
|
|
64
|
-
*/
|
|
65
|
-
private ensureHeadersSent;
|
|
66
|
-
/**
|
|
67
|
-
* Writes a chunk of the response body, mimicking `http.ServerResponse.write`.
|
|
68
|
-
* This is the first point where headers are implicitly flushed.
|
|
69
|
-
*/
|
|
70
|
-
write(chunk: unknown, encodingOrCallback?: BufferEncoding | ((error: Error | null | undefined) => void), callback?: (error: Error | null | undefined) => void): boolean;
|
|
71
|
-
/**
|
|
72
|
-
* Finishes sending the response, mimicking `http.ServerResponse.end`.
|
|
73
|
-
* This also implicitly flushes headers if they haven't been sent yet.
|
|
74
|
-
*/
|
|
75
|
-
end(chunk?: unknown, encodingOrCallback?: BufferEncoding | (() => void), callback?: () => void): this;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=honoNodeBridge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"honoNodeBridge.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/honoNodeBridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAGhD;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAC1C,UAAU,SAAO;IACjB,OAAO,EAAE,mBAAmB,CAAM;IACzC,OAAO,CAAC,YAAY,CAAS;;IAM7B;;;OAGG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;;;;OAOG;IACH,SAAS,CACP,UAAU,EAAE,MAAM,EAClB,sBAAsB,CAAC,EAAE,MAAM,GAAG,mBAAmB,EACrD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI;IAsBP;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAmBhE;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAI/D;;OAEG;IACH,UAAU,IAAI,mBAAmB;IAIjC;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAkBhC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACH,KAAK,CACH,KAAK,EAAE,OAAO,EACd,kBAAkB,CAAC,EACf,cAAc,GACd,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC,EAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,GACnD,OAAO;IAcV;;;OAGG;IACH,GAAG,CACD,KAAK,CAAC,EAAE,OAAO,EACf,kBAAkB,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,EAClD,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,IAAI;CAeR"}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Provides a high-fidelity bridge between the MCP SDK's Node.js-style
|
|
3
|
-
* streamable HTTP transport and Hono's Web Standards-based streaming response.
|
|
4
|
-
* This class is essential for adapting the Node.js `http.ServerResponse` API
|
|
5
|
-
* to a format consumable by modern web frameworks.
|
|
6
|
-
* @module src/mcp-server/transports/core/honoNodeBridge
|
|
7
|
-
*/
|
|
8
|
-
import { PassThrough } from "stream";
|
|
9
|
-
import { logger, requestContextService } from "../../../utils/index.js";
|
|
10
|
-
/**
|
|
11
|
-
* A mock `http.ServerResponse` that pipes all written data to a `PassThrough` stream.
|
|
12
|
-
*
|
|
13
|
-
* This class serves as a critical compatibility layer, emulating the behavior of a
|
|
14
|
-
* Node.js `ServerResponse` to capture status codes, headers, and the response body.
|
|
15
|
-
* The captured data can then be used to construct a Web-standard `Response` object,
|
|
16
|
-
* for instance in a Hono application. It pays close attention to the timing of when
|
|
17
|
-
* headers are considered "sent" to mimic Node.js behavior accurately.
|
|
18
|
-
*/
|
|
19
|
-
export class HonoStreamResponse extends PassThrough {
|
|
20
|
-
statusCode = 200;
|
|
21
|
-
headers = {};
|
|
22
|
-
_headersSent = false;
|
|
23
|
-
constructor() {
|
|
24
|
-
super();
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* A getter that reports whether the headers have been sent.
|
|
28
|
-
* In this emulation, headers are considered sent the first time `write()` or `end()` is called.
|
|
29
|
-
*/
|
|
30
|
-
get headersSent() {
|
|
31
|
-
return this._headersSent;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Sets the status code and headers for the response, mimicking `http.ServerResponse.writeHead`.
|
|
35
|
-
*
|
|
36
|
-
* @param statusCode - The HTTP status code.
|
|
37
|
-
* @param statusMessageOrHeaders - An optional status message (string) or headers object.
|
|
38
|
-
* @param headers - An optional headers object, used if the second argument is a status message.
|
|
39
|
-
* @returns The instance of the class for chaining.
|
|
40
|
-
*/
|
|
41
|
-
writeHead(statusCode, statusMessageOrHeaders, headers) {
|
|
42
|
-
if (this._headersSent) {
|
|
43
|
-
// Per Node.js spec, do nothing if headers are already sent.
|
|
44
|
-
return this;
|
|
45
|
-
}
|
|
46
|
-
this.statusCode = statusCode;
|
|
47
|
-
const headersArg = typeof statusMessageOrHeaders === "string"
|
|
48
|
-
? headers
|
|
49
|
-
: statusMessageOrHeaders;
|
|
50
|
-
if (headersArg) {
|
|
51
|
-
for (const [key, value] of Object.entries(headersArg)) {
|
|
52
|
-
if (value !== undefined) {
|
|
53
|
-
this.setHeader(key, value);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return this;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Sets a single header value.
|
|
61
|
-
*
|
|
62
|
-
* @param name - The name of the header.
|
|
63
|
-
* @param value - The value of the header.
|
|
64
|
-
* @returns The instance of the class for chaining.
|
|
65
|
-
*/
|
|
66
|
-
setHeader(name, value) {
|
|
67
|
-
if (this._headersSent) {
|
|
68
|
-
// Retrieve context if available, otherwise create a basic one
|
|
69
|
-
const context = requestContextService.createRequestContext({
|
|
70
|
-
operation: "HonoStreamResponse.setHeader",
|
|
71
|
-
component: "HonoNodeBridge",
|
|
72
|
-
});
|
|
73
|
-
// Replace console.warn with logger.warning
|
|
74
|
-
logger.warning({ ...context, headerName: name }, `[HonoBridge] Warning: Cannot set header "${name}" after headers are sent.`);
|
|
75
|
-
return this;
|
|
76
|
-
}
|
|
77
|
-
this.headers[name.toLowerCase()] = value;
|
|
78
|
-
return this;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Gets a header that has been queued for the response.
|
|
82
|
-
* @param name - The name of the header.
|
|
83
|
-
* @returns The value of the header, or undefined if not set.
|
|
84
|
-
*/
|
|
85
|
-
getHeader(name) {
|
|
86
|
-
return this.headers[name.toLowerCase()];
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Returns a copy of the current outgoing headers.
|
|
90
|
-
*/
|
|
91
|
-
getHeaders() {
|
|
92
|
-
return { ...this.headers };
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Removes a header that has been queued for the response.
|
|
96
|
-
* @param name - The name of the header to remove.
|
|
97
|
-
*/
|
|
98
|
-
removeHeader(name) {
|
|
99
|
-
if (this._headersSent) {
|
|
100
|
-
// Retrieve context if available
|
|
101
|
-
const context = requestContextService.createRequestContext({
|
|
102
|
-
operation: "HonoStreamResponse.removeHeader",
|
|
103
|
-
component: "HonoNodeBridge",
|
|
104
|
-
});
|
|
105
|
-
// Replace console.warn with logger.warning
|
|
106
|
-
logger.warning({ ...context, headerName: name }, `[HonoBridge] Warning: Cannot remove header "${name}" after headers are sent.`);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
delete this.headers[name.toLowerCase()];
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* A private helper to mark headers as sent. This is called implicitly
|
|
113
|
-
* before any part of the body is written.
|
|
114
|
-
*/
|
|
115
|
-
ensureHeadersSent() {
|
|
116
|
-
if (!this._headersSent) {
|
|
117
|
-
this._headersSent = true;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Writes a chunk of the response body, mimicking `http.ServerResponse.write`.
|
|
122
|
-
* This is the first point where headers are implicitly flushed.
|
|
123
|
-
*/
|
|
124
|
-
write(chunk, encodingOrCallback, callback) {
|
|
125
|
-
this.ensureHeadersSent();
|
|
126
|
-
const encoding = typeof encodingOrCallback === "string" ? encodingOrCallback : undefined;
|
|
127
|
-
const cb = typeof encodingOrCallback === "function" ? encodingOrCallback : callback;
|
|
128
|
-
if (encoding) {
|
|
129
|
-
return super.write(chunk, encoding, cb);
|
|
130
|
-
}
|
|
131
|
-
return super.write(chunk, cb);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Finishes sending the response, mimicking `http.ServerResponse.end`.
|
|
135
|
-
* This also implicitly flushes headers if they haven't been sent yet.
|
|
136
|
-
*/
|
|
137
|
-
end(chunk, encodingOrCallback, callback) {
|
|
138
|
-
this.ensureHeadersSent();
|
|
139
|
-
const encoding = typeof encodingOrCallback === "string" ? encodingOrCallback : undefined;
|
|
140
|
-
const cb = typeof encodingOrCallback === "function" ? encodingOrCallback : callback;
|
|
141
|
-
if (encoding) {
|
|
142
|
-
super.end(chunk, encoding, cb);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
super.end(chunk, cb);
|
|
146
|
-
}
|
|
147
|
-
return this;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=honoNodeBridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"honoNodeBridge.js","sourceRoot":"","sources":["../../../../src/mcp-server/transports/core/honoNodeBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Manages DuckDB instance and connection lifecycle.
|
|
3
|
-
* @module services/duck-db/duckDBConnectionManager
|
|
4
|
-
*/
|
|
5
|
-
import * as duckdb from "@duckdb/node-api";
|
|
6
|
-
import { RequestContext } from "../../utils/index.js";
|
|
7
|
-
import { DuckDBServiceConfig } from "./types.js";
|
|
8
|
-
export declare class DuckDBConnectionManager {
|
|
9
|
-
private dbInstance;
|
|
10
|
-
private dbConnection;
|
|
11
|
-
private isInitialized;
|
|
12
|
-
private currentConfig;
|
|
13
|
-
/**
|
|
14
|
-
* Initializes the DuckDB instance and connection.
|
|
15
|
-
* @param {DuckDBServiceConfig} [config] - Configuration for the service.
|
|
16
|
-
* @returns {Promise<void>}
|
|
17
|
-
*/
|
|
18
|
-
initialize(config?: DuckDBServiceConfig): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Installs and loads a DuckDB extension.
|
|
21
|
-
* @param {string} extensionName - The name of the extension.
|
|
22
|
-
* @param {RequestContext} parentContext - The parent request context.
|
|
23
|
-
* @returns {Promise<void>}
|
|
24
|
-
*/
|
|
25
|
-
loadExtension(extensionName: string, parentContext: RequestContext): Promise<void>;
|
|
26
|
-
/**
|
|
27
|
-
* Closes the DuckDB connection and instance.
|
|
28
|
-
* @returns {Promise<void>}
|
|
29
|
-
*/
|
|
30
|
-
close(): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* Ensures that the service is initialized.
|
|
33
|
-
* @param {RequestContext} context - The request context for error reporting.
|
|
34
|
-
* @throws {McpError} If the service is not initialized.
|
|
35
|
-
*/
|
|
36
|
-
ensureInitialized(context: RequestContext): void;
|
|
37
|
-
/**
|
|
38
|
-
* Gets the underlying DuckDB connection object.
|
|
39
|
-
* @returns {duckdb.DuckDBConnection}
|
|
40
|
-
* @throws {McpError} If the service is not initialized.
|
|
41
|
-
*/
|
|
42
|
-
getConnection(): duckdb.DuckDBConnection;
|
|
43
|
-
/**
|
|
44
|
-
* Gets the underlying DuckDB instance object.
|
|
45
|
-
* @returns {duckdb.DuckDBInstance}
|
|
46
|
-
* @throws {McpError} If the service is not initialized.
|
|
47
|
-
*/
|
|
48
|
-
getInstance(): duckdb.DuckDBInstance;
|
|
49
|
-
/**
|
|
50
|
-
* Checks if the service is currently initialized.
|
|
51
|
-
* @returns {boolean} True if initialized, false otherwise.
|
|
52
|
-
*/
|
|
53
|
-
get isServiceInitialized(): boolean;
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=duckDBConnectionManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckDBConnectionManager.d.ts","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBConnectionManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAGL,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIjD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAoC;IAEzD;;;;OAIG;IACU,UAAU,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8FpE;;;;;OAKG;IACU,aAAa,CACxB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,cAAc,GAC5B,OAAO,CAAC,IAAI,CAAC;IAgChB;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCnC;;;;OAIG;IACI,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAUvD;;;;OAIG;IACI,aAAa,IAAI,MAAM,CAAC,gBAAgB;IAQ/C;;;;OAIG;IACI,WAAW,IAAI,MAAM,CAAC,cAAc;IAQ3C;;;OAGG;IACH,IAAW,oBAAoB,IAAI,OAAO,CAEzC;CACF"}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Manages DuckDB instance and connection lifecycle.
|
|
3
|
-
* @module services/duck-db/duckDBConnectionManager
|
|
4
|
-
*/
|
|
5
|
-
import * as duckdb from "@duckdb/node-api";
|
|
6
|
-
import { JsonRpcErrorCode, McpError } from "../../types-global/errors.js";
|
|
7
|
-
import { ErrorHandler, logger, requestContextService, } from "../../utils/index.js";
|
|
8
|
-
const DEFAULT_DB_PATH = ":memory:";
|
|
9
|
-
export class DuckDBConnectionManager {
|
|
10
|
-
dbInstance = null;
|
|
11
|
-
dbConnection = null;
|
|
12
|
-
isInitialized = false;
|
|
13
|
-
currentConfig = null;
|
|
14
|
-
/**
|
|
15
|
-
* Initializes the DuckDB instance and connection.
|
|
16
|
-
* @param {DuckDBServiceConfig} [config] - Configuration for the service.
|
|
17
|
-
* @returns {Promise<void>}
|
|
18
|
-
*/
|
|
19
|
-
async initialize(config) {
|
|
20
|
-
const context = requestContextService.createRequestContext({
|
|
21
|
-
operation: "DuckDBConnectionManager.initialize",
|
|
22
|
-
initialData: config,
|
|
23
|
-
});
|
|
24
|
-
if (this.isInitialized) {
|
|
25
|
-
logger.warning(context, "DuckDBConnectionManager already initialized. Close first to re-initialize.");
|
|
26
|
-
// Potentially compare new config with old config if re-init with changes is desired
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
this.currentConfig = config || {};
|
|
30
|
-
return ErrorHandler.tryCatch(async () => {
|
|
31
|
-
const dbPath = this.currentConfig?.dbPath || DEFAULT_DB_PATH;
|
|
32
|
-
const launchConfig = this.currentConfig?.launchConfig;
|
|
33
|
-
logger.info(context, `Initializing DuckDB instance with path: ${dbPath}`);
|
|
34
|
-
// Pass launchConfig directly to the create method
|
|
35
|
-
// The exact structure for launchConfig might need verification against @duckdb/node-api docs
|
|
36
|
-
// Assuming it takes an object similar to what's in DuckDBServiceConfig
|
|
37
|
-
this.dbInstance = await duckdb.DuckDBInstance.create(dbPath, launchConfig || {});
|
|
38
|
-
this.dbConnection = await this.dbInstance.connect();
|
|
39
|
-
logger.info(context, "DuckDB instance and connection created.");
|
|
40
|
-
// Set isInitialized to true now that core components are ready
|
|
41
|
-
this.isInitialized = true;
|
|
42
|
-
// If launchConfig was successfully passed to create(), this block might no longer be needed
|
|
43
|
-
// or might be adjusted for settings that *can* be applied post-connection.
|
|
44
|
-
// For now, let's comment it out to avoid the original error.
|
|
45
|
-
// if (launchConfig) {
|
|
46
|
-
// for (const [key, value] of Object.entries(launchConfig)) {
|
|
47
|
-
// // Ensure connection is available for run
|
|
48
|
-
// if (!this.dbConnection) {
|
|
49
|
-
// throw new McpError(
|
|
50
|
-
// BaseErrorCode.INTERNAL_ERROR,
|
|
51
|
-
// "Connection not available for applying launch config",
|
|
52
|
-
// context,
|
|
53
|
-
// );
|
|
54
|
-
// }
|
|
55
|
-
// await this.dbConnection.run(
|
|
56
|
-
// `SET ${key}='${String(value).replace(/'/g, "''")}';`,
|
|
57
|
-
// );
|
|
58
|
-
// }
|
|
59
|
-
// logger.info({
|
|
60
|
-
// ...context,
|
|
61
|
-
// launchConfig,
|
|
62
|
-
// }, "Applied launch configuration via SET commands.");
|
|
63
|
-
// }
|
|
64
|
-
if (this.currentConfig?.extensions &&
|
|
65
|
-
this.currentConfig.extensions.length > 0) {
|
|
66
|
-
logger.info({
|
|
67
|
-
...context,
|
|
68
|
-
extensions: this.currentConfig.extensions,
|
|
69
|
-
}, "Loading extensions...");
|
|
70
|
-
for (const extName of this.currentConfig.extensions) {
|
|
71
|
-
await this.loadExtension(extName, context);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// this.isInitialized = true; // Moved earlier
|
|
75
|
-
logger.info(context, "DuckDBConnectionManager initialized successfully.");
|
|
76
|
-
}, {
|
|
77
|
-
operation: "DuckDBConnectionManager.initialize",
|
|
78
|
-
context,
|
|
79
|
-
input: config,
|
|
80
|
-
errorCode: JsonRpcErrorCode.InitializationFailed,
|
|
81
|
-
critical: true,
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Installs and loads a DuckDB extension.
|
|
86
|
-
* @param {string} extensionName - The name of the extension.
|
|
87
|
-
* @param {RequestContext} parentContext - The parent request context.
|
|
88
|
-
* @returns {Promise<void>}
|
|
89
|
-
*/
|
|
90
|
-
async loadExtension(extensionName, parentContext) {
|
|
91
|
-
this.ensureInitialized(parentContext);
|
|
92
|
-
const context = requestContextService.createRequestContext({
|
|
93
|
-
operation: "DuckDBConnectionManager.loadExtension",
|
|
94
|
-
initialData: { extensionName },
|
|
95
|
-
parentContext,
|
|
96
|
-
});
|
|
97
|
-
return ErrorHandler.tryCatch(async () => {
|
|
98
|
-
logger.info(context, `Installing extension: ${extensionName}`);
|
|
99
|
-
await this.dbConnection.run(`INSTALL '${extensionName.replace(/'/g, "''")}'`);
|
|
100
|
-
logger.info(context, `Loading extension: ${extensionName}`);
|
|
101
|
-
await this.dbConnection.run(`LOAD '${extensionName.replace(/'/g, "''")}'`);
|
|
102
|
-
logger.info(context, `Extension ${extensionName} installed and loaded.`);
|
|
103
|
-
}, {
|
|
104
|
-
operation: "DuckDBConnectionManager.loadExtension",
|
|
105
|
-
context,
|
|
106
|
-
input: { extensionName },
|
|
107
|
-
errorCode: JsonRpcErrorCode.InternalError,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Closes the DuckDB connection and instance.
|
|
112
|
-
* @returns {Promise<void>}
|
|
113
|
-
*/
|
|
114
|
-
async close() {
|
|
115
|
-
const context = requestContextService.createRequestContext({
|
|
116
|
-
operation: "DuckDBConnectionManager.close",
|
|
117
|
-
});
|
|
118
|
-
if (!this.isInitialized) {
|
|
119
|
-
logger.warning(context, "DuckDBConnectionManager not initialized, nothing to close.");
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
return ErrorHandler.tryCatch(async () => {
|
|
123
|
-
if (this.dbConnection) {
|
|
124
|
-
this.dbConnection.closeSync(); // Use synchronous closeSync
|
|
125
|
-
this.dbConnection = null;
|
|
126
|
-
logger.info(context, "DuckDB connection closed.");
|
|
127
|
-
}
|
|
128
|
-
if (this.dbInstance) {
|
|
129
|
-
this.dbInstance.closeSync(); // Use synchronous closeSync
|
|
130
|
-
this.dbInstance = null;
|
|
131
|
-
logger.info(context, "DuckDB instance closed.");
|
|
132
|
-
}
|
|
133
|
-
this.isInitialized = false;
|
|
134
|
-
this.currentConfig = null;
|
|
135
|
-
logger.info(context, "DuckDBConnectionManager closed successfully.");
|
|
136
|
-
}, {
|
|
137
|
-
operation: "DuckDBConnectionManager.close",
|
|
138
|
-
context,
|
|
139
|
-
errorCode: JsonRpcErrorCode.InternalError,
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Ensures that the service is initialized.
|
|
144
|
-
* @param {RequestContext} context - The request context for error reporting.
|
|
145
|
-
* @throws {McpError} If the service is not initialized.
|
|
146
|
-
*/
|
|
147
|
-
ensureInitialized(context) {
|
|
148
|
-
if (!this.isInitialized || !this.dbConnection || !this.dbInstance) {
|
|
149
|
-
throw new McpError(JsonRpcErrorCode.ServiceUnavailable, "DuckDBConnectionManager is not initialized. Call initialize() first.", context);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Gets the underlying DuckDB connection object.
|
|
154
|
-
* @returns {duckdb.DuckDBConnection}
|
|
155
|
-
* @throws {McpError} If the service is not initialized.
|
|
156
|
-
*/
|
|
157
|
-
getConnection() {
|
|
158
|
-
const context = requestContextService.createRequestContext({
|
|
159
|
-
operation: "DuckDBConnectionManager.getConnection",
|
|
160
|
-
});
|
|
161
|
-
this.ensureInitialized(context);
|
|
162
|
-
return this.dbConnection;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Gets the underlying DuckDB instance object.
|
|
166
|
-
* @returns {duckdb.DuckDBInstance}
|
|
167
|
-
* @throws {McpError} If the service is not initialized.
|
|
168
|
-
*/
|
|
169
|
-
getInstance() {
|
|
170
|
-
const context = requestContextService.createRequestContext({
|
|
171
|
-
operation: "DuckDBConnectionManager.getInstance",
|
|
172
|
-
});
|
|
173
|
-
this.ensureInitialized(context);
|
|
174
|
-
return this.dbInstance;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Checks if the service is currently initialized.
|
|
178
|
-
* @returns {boolean} True if initialized, false otherwise.
|
|
179
|
-
*/
|
|
180
|
-
get isServiceInitialized() {
|
|
181
|
-
return this.isInitialized;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
//# sourceMappingURL=duckDBConnectionManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckDBConnectionManager.js","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBConnectionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Executes SQL queries and manages transactions for DuckDB.
|
|
3
|
-
* @module services/duck-db/duckDBQueryExecutor
|
|
4
|
-
*/
|
|
5
|
-
import * as duckdb from "@duckdb/node-api";
|
|
6
|
-
import { DuckDBQueryResult } from "./types.js";
|
|
7
|
-
export declare class DuckDBQueryExecutor {
|
|
8
|
-
private dbConnection;
|
|
9
|
-
constructor(connection: duckdb.DuckDBConnection);
|
|
10
|
-
run(sql: string, params?: duckdb.DuckDBValue[]): Promise<void>;
|
|
11
|
-
query<T = Record<string, unknown>>(sql: string, params?: duckdb.DuckDBValue[]): Promise<DuckDBQueryResult<T>>;
|
|
12
|
-
stream(sql: string, params?: duckdb.DuckDBValue[]): Promise<duckdb.DuckDBResult>;
|
|
13
|
-
prepare(sql: string): Promise<duckdb.DuckDBPreparedStatement>;
|
|
14
|
-
beginTransaction(): Promise<void>;
|
|
15
|
-
commitTransaction(): Promise<void>;
|
|
16
|
-
rollbackTransaction(): Promise<void>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=duckDBQueryExecutor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckDBQueryExecutor.d.ts","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBQueryExecutor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAG3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,YAAY,CAA0B;gBAElC,UAAU,EAAE,MAAM,CAAC,gBAAgB;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB9D,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAoCnB,MAAM,CACjB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;IAwBlB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;IAoB7D,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlD"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Executes SQL queries and manages transactions for DuckDB.
|
|
3
|
-
* @module services/duck-db/duckDBQueryExecutor
|
|
4
|
-
*/
|
|
5
|
-
import { JsonRpcErrorCode } from "../../types-global/errors.js";
|
|
6
|
-
import { ErrorHandler, logger, requestContextService } from "../../utils/index.js";
|
|
7
|
-
export class DuckDBQueryExecutor {
|
|
8
|
-
dbConnection;
|
|
9
|
-
constructor(connection) {
|
|
10
|
-
this.dbConnection = connection;
|
|
11
|
-
}
|
|
12
|
-
async run(sql, params) {
|
|
13
|
-
const context = requestContextService.createRequestContext({
|
|
14
|
-
operation: "DuckDBQueryExecutor.run",
|
|
15
|
-
initialData: { sql, params },
|
|
16
|
-
});
|
|
17
|
-
return ErrorHandler.tryCatch(async () => {
|
|
18
|
-
logger.debug({ ...context, params }, `Executing SQL (run): ${sql}`);
|
|
19
|
-
if (params === undefined) {
|
|
20
|
-
await this.dbConnection.run(sql);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
await this.dbConnection.run(sql, params);
|
|
24
|
-
}
|
|
25
|
-
}, {
|
|
26
|
-
operation: "DuckDBQueryExecutor.run",
|
|
27
|
-
context,
|
|
28
|
-
input: { sql, params },
|
|
29
|
-
errorCode: JsonRpcErrorCode.DatabaseError,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
async query(sql, params) {
|
|
33
|
-
const context = requestContextService.createRequestContext({
|
|
34
|
-
operation: "DuckDBQueryExecutor.query",
|
|
35
|
-
initialData: { sql, params },
|
|
36
|
-
});
|
|
37
|
-
return ErrorHandler.tryCatch(async () => {
|
|
38
|
-
logger.debug({ ...context, params }, `Executing SQL (query): ${sql}`);
|
|
39
|
-
const resultObject = await this.stream(sql, params);
|
|
40
|
-
const rows = (await resultObject.getRows());
|
|
41
|
-
const columnNames = resultObject.columnNames();
|
|
42
|
-
const columnTypes = resultObject
|
|
43
|
-
.columnTypes()
|
|
44
|
-
.map((ct) => ct.typeId);
|
|
45
|
-
return {
|
|
46
|
-
rows: rows,
|
|
47
|
-
columnNames: columnNames,
|
|
48
|
-
columnTypes: columnTypes,
|
|
49
|
-
rowCount: rows.length,
|
|
50
|
-
};
|
|
51
|
-
}, {
|
|
52
|
-
operation: "DuckDBQueryExecutor.query",
|
|
53
|
-
context,
|
|
54
|
-
input: { sql, params },
|
|
55
|
-
errorCode: JsonRpcErrorCode.DatabaseError,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
async stream(sql, params) {
|
|
59
|
-
const context = requestContextService.createRequestContext({
|
|
60
|
-
operation: "DuckDBQueryExecutor.stream",
|
|
61
|
-
initialData: { sql, params },
|
|
62
|
-
});
|
|
63
|
-
return ErrorHandler.tryCatch(async () => {
|
|
64
|
-
logger.debug({ ...context, params }, `Executing SQL (stream): ${sql}`);
|
|
65
|
-
if (params === undefined) {
|
|
66
|
-
return this.dbConnection.stream(sql);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
return this.dbConnection.stream(sql, params);
|
|
70
|
-
}
|
|
71
|
-
}, {
|
|
72
|
-
operation: "DuckDBQueryExecutor.stream",
|
|
73
|
-
context,
|
|
74
|
-
input: { sql, params },
|
|
75
|
-
errorCode: JsonRpcErrorCode.DatabaseError,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
async prepare(sql) {
|
|
79
|
-
const context = requestContextService.createRequestContext({
|
|
80
|
-
operation: "DuckDBQueryExecutor.prepare",
|
|
81
|
-
initialData: { sql },
|
|
82
|
-
});
|
|
83
|
-
return ErrorHandler.tryCatch(async () => {
|
|
84
|
-
logger.debug(context, `Preparing SQL: ${sql}`);
|
|
85
|
-
return this.dbConnection.prepare(sql);
|
|
86
|
-
}, {
|
|
87
|
-
operation: "DuckDBQueryExecutor.prepare",
|
|
88
|
-
context,
|
|
89
|
-
input: { sql },
|
|
90
|
-
errorCode: JsonRpcErrorCode.DatabaseError,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
async beginTransaction() {
|
|
94
|
-
const context = requestContextService.createRequestContext({
|
|
95
|
-
operation: "DuckDBQueryExecutor.beginTransaction",
|
|
96
|
-
});
|
|
97
|
-
await this.run("BEGIN TRANSACTION");
|
|
98
|
-
logger.info(context, "Transaction started.");
|
|
99
|
-
}
|
|
100
|
-
async commitTransaction() {
|
|
101
|
-
const context = requestContextService.createRequestContext({
|
|
102
|
-
operation: "DuckDBQueryExecutor.commitTransaction",
|
|
103
|
-
});
|
|
104
|
-
await this.run("COMMIT");
|
|
105
|
-
logger.info(context, "Transaction committed.");
|
|
106
|
-
}
|
|
107
|
-
async rollbackTransaction() {
|
|
108
|
-
const context = requestContextService.createRequestContext({
|
|
109
|
-
operation: "DuckDBQueryExecutor.rollbackTransaction",
|
|
110
|
-
});
|
|
111
|
-
await this.run("ROLLBACK");
|
|
112
|
-
logger.info(context, "Transaction rolled back.");
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=duckDBQueryExecutor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckDBQueryExecutor.js","sourceRoot":"","sources":["../../../src/services/duck-db/duckDBQueryExecutor.ts"],"names":[],"mappings":"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"}
|