@gizmodata/gizmosql-client 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.
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FlightClient = void 0;
37
+ const grpc = __importStar(require("@grpc/grpc-js"));
38
+ const apache_arrow_1 = require("apache-arrow");
39
+ const Flight_grpc_pb_1 = require("./generated/proto/Flight_grpc_pb");
40
+ const Flight_pb_1 = require("./generated/proto/Flight_pb");
41
+ const errors_1 = require("./errors");
42
+ const utils_1 = require("./utils");
43
+ class FlightClient {
44
+ constructor(config) {
45
+ this.client = null;
46
+ (0, utils_1.validateConfig)(config);
47
+ this.config = { plaintext: false, ...config };
48
+ this.credentials = this.createCredentials();
49
+ this.metadata = this.createMetadata();
50
+ }
51
+ createCredentials() {
52
+ if (this.config.plaintext) {
53
+ return grpc.credentials.createInsecure();
54
+ }
55
+ if (this.config.tlsSkipVerify) {
56
+ return grpc.credentials.createSsl(null, null, null, {
57
+ rejectUnauthorized: false
58
+ });
59
+ }
60
+ return grpc.credentials.createSsl();
61
+ }
62
+ createMetadata() {
63
+ const metadata = new grpc.Metadata();
64
+ if (this.config.token) {
65
+ metadata.add("authorization", `Bearer ${this.config.token}`);
66
+ }
67
+ else if (this.config.username && this.config.password) {
68
+ const credential = Buffer.from(`${this.config.username}:${this.config.password}`).toString('base64');
69
+ metadata.add("authorization", `Basic ${credential}`);
70
+ }
71
+ return metadata;
72
+ }
73
+ async connect() {
74
+ try {
75
+ const address = `${this.config.host}:${this.config.port}`;
76
+ // Configure gRPC options for large message handling
77
+ const options = {
78
+ 'grpc.max_receive_message_length': 100 * 1024 * 1024, // 100MB
79
+ 'grpc.max_send_message_length': 100 * 1024 * 1024, // 100MB
80
+ 'grpc.keepalive_time_ms': 30000,
81
+ 'grpc.keepalive_timeout_ms': 5000,
82
+ 'grpc.keepalive_permit_without_calls': 1,
83
+ 'grpc.http2.max_pings_without_data': 0,
84
+ 'grpc.http2.min_ping_interval_without_data_ms': 300000,
85
+ };
86
+ this.client = new Flight_grpc_pb_1.FlightServiceClient(address, this.credentials, options);
87
+ if (this.config.token || (this.config.username && this.config.password)) {
88
+ await this.authenticate();
89
+ }
90
+ }
91
+ catch (error) {
92
+ throw new errors_1.ConnectionError(`Failed to connect to ${this.config.host}:${this.config.port}`, error);
93
+ }
94
+ }
95
+ async authenticate() {
96
+ if (!this.client) {
97
+ throw new errors_1.ConnectionError('Client not connected');
98
+ }
99
+ return new Promise((resolve, reject) => {
100
+ const call = this.client.handshake(this.metadata);
101
+ const handshakeRequest = new Flight_pb_1.HandshakeRequest();
102
+ call.write(handshakeRequest);
103
+ call.on('metadata', (metadata) => {
104
+ const authHeader = metadata.get('authorization');
105
+ if (authHeader && authHeader.length > 0) {
106
+ this.metadata.set('authorization', authHeader[0]);
107
+ }
108
+ });
109
+ call.on('data', () => {
110
+ resolve();
111
+ });
112
+ call.on('end', () => {
113
+ resolve();
114
+ });
115
+ call.on('error', (error) => {
116
+ reject(new errors_1.AuthenticationError((0, utils_1.parseErrorFromGrpc)(error).message));
117
+ });
118
+ call.end();
119
+ });
120
+ }
121
+ async getFlightInfo(descriptor) {
122
+ if (!this.client) {
123
+ await this.connect();
124
+ }
125
+ return new Promise((resolve, reject) => {
126
+ this.client.getFlightInfo(descriptor, this.metadata, (error, response) => {
127
+ if (error) {
128
+ reject((0, utils_1.parseErrorFromGrpc)(error));
129
+ }
130
+ else {
131
+ resolve(response);
132
+ }
133
+ });
134
+ });
135
+ }
136
+ async doGet(ticket) {
137
+ if (!this.client) {
138
+ await this.connect();
139
+ }
140
+ return new Promise((resolve, reject) => {
141
+ const STREAM_TIMEOUT_MS = 60000; // 60 second deadline
142
+ const options = {
143
+ deadline: Date.now() + STREAM_TIMEOUT_MS,
144
+ };
145
+ const call = this.client.doGet(ticket, this.metadata, options);
146
+ // Set up flow control for streaming
147
+ call.pause();
148
+ call.resume();
149
+ const flightDataMessages = [];
150
+ call.on('data', (flightData) => {
151
+ const dataHeader = flightData.getDataHeader_asU8();
152
+ const dataBody = flightData.getDataBody_asU8();
153
+ // Store each FlightData message as a complete unit for Arrow IPC reconstruction
154
+ flightDataMessages.push({
155
+ header: dataHeader,
156
+ body: dataBody
157
+ });
158
+ });
159
+ call.on('error', (error) => {
160
+ reject((0, utils_1.parseErrorFromGrpc)(error));
161
+ });
162
+ call.on('end', () => {
163
+ try {
164
+ const result = this.processFlightDataMessages(flightDataMessages);
165
+ resolve(result);
166
+ }
167
+ catch (error) {
168
+ reject(new errors_1.FlightError(`Failed to parse Arrow data: ${error}`));
169
+ }
170
+ });
171
+ });
172
+ }
173
+ /**
174
+ * Processes FlightData messages and reconstructs them into Arrow IPC format.
175
+ * According to Apache Arrow Flight spec, FlightData contains FlatBuffer messages
176
+ * that need to be converted to proper Arrow IPC format for parsing.
177
+ */
178
+ processFlightDataMessages(messages) {
179
+ if (messages.length === 0) {
180
+ return new apache_arrow_1.Table();
181
+ }
182
+ const ipcParts = this.convertFlightDataToIPC(messages);
183
+ return (0, apache_arrow_1.tableFromIPC)(ipcParts);
184
+ }
185
+ /**
186
+ * Converts FlightData messages to Arrow IPC format.
187
+ * Each FlightData message contains a header (FlatBuffer) and optional body data.
188
+ */
189
+ convertFlightDataToIPC(messages) {
190
+ const ipcParts = [];
191
+ for (const message of messages) {
192
+ const { header, body } = message;
193
+ if (!header || header.length === 0) {
194
+ continue;
195
+ }
196
+ const ipcMessage = this.createIPCMessage(header, body);
197
+ ipcParts.push(ipcMessage);
198
+ }
199
+ return ipcParts;
200
+ }
201
+ /**
202
+ * Creates a single Arrow IPC message from FlightData header and body.
203
+ * Format: [4 bytes continuation] [4 bytes message length] [message] [padding] [body]
204
+ */
205
+ createIPCMessage(header, body) {
206
+ const messageLength = header.length;
207
+ const bodyLength = body?.length || 0;
208
+ const paddingLength = this.calculatePadding(messageLength);
209
+ const totalLength = 4 + 4 + messageLength + paddingLength + bodyLength;
210
+ const ipcMessage = new Uint8Array(totalLength);
211
+ let offset = 0;
212
+ // Write continuation indicator (0xFFFFFFFF for valid message)
213
+ offset = this.writeUint32(ipcMessage, offset, 0xFFFFFFFF);
214
+ // Write message length
215
+ offset = this.writeUint32(ipcMessage, offset, messageLength);
216
+ // Write FlatBuffer message (header)
217
+ ipcMessage.set(header, offset);
218
+ offset += messageLength;
219
+ // Skip padding (already zero-filled)
220
+ offset += paddingLength;
221
+ // Write body data if present
222
+ if (body && body.length > 0) {
223
+ ipcMessage.set(body, offset);
224
+ }
225
+ return ipcMessage;
226
+ }
227
+ /**
228
+ * Calculates padding needed to align to 8-byte boundary.
229
+ */
230
+ calculatePadding(messageLength) {
231
+ return (8 - (messageLength % 8)) % 8;
232
+ }
233
+ /**
234
+ * Writes a 32-bit unsigned integer in little-endian format.
235
+ */
236
+ writeUint32(buffer, offset, value) {
237
+ const view = new DataView(buffer.buffer, offset, 4);
238
+ view.setUint32(0, value, true); // little endian
239
+ return offset + 4;
240
+ }
241
+ async doPut(stream) {
242
+ if (!this.client) {
243
+ await this.connect();
244
+ }
245
+ return new Promise((resolve, reject) => {
246
+ const call = this.client.doPut(this.metadata);
247
+ call.on('error', (error) => {
248
+ reject((0, utils_1.parseErrorFromGrpc)(error));
249
+ });
250
+ call.on('end', () => {
251
+ resolve();
252
+ });
253
+ (async () => {
254
+ try {
255
+ for await (const data of stream) {
256
+ call.write(data);
257
+ }
258
+ call.end();
259
+ }
260
+ catch (error) {
261
+ reject(new errors_1.FlightError(`Failed to write data: ${error}`));
262
+ }
263
+ })();
264
+ });
265
+ }
266
+ async doAction(action) {
267
+ if (!this.client) {
268
+ await this.connect();
269
+ }
270
+ return new Promise((resolve, reject) => {
271
+ const call = this.client.doAction(action, this.metadata);
272
+ const results = [];
273
+ call.on('data', (result) => {
274
+ results.push(result);
275
+ });
276
+ call.on('error', (error) => {
277
+ reject((0, utils_1.parseErrorFromGrpc)(error));
278
+ });
279
+ call.on('end', () => {
280
+ resolve(results);
281
+ });
282
+ });
283
+ }
284
+ async listFlights(criteria) {
285
+ if (!this.client) {
286
+ await this.connect();
287
+ }
288
+ const criteriaToUse = criteria || new Flight_pb_1.Criteria();
289
+ return new Promise((resolve, reject) => {
290
+ const call = this.client.listFlights(criteriaToUse, this.metadata);
291
+ const flights = [];
292
+ call.on('data', (flightInfo) => {
293
+ flights.push(flightInfo);
294
+ });
295
+ call.on('error', (error) => {
296
+ reject((0, utils_1.parseErrorFromGrpc)(error));
297
+ });
298
+ call.on('end', () => {
299
+ resolve(flights);
300
+ });
301
+ });
302
+ }
303
+ async getSchema(descriptor) {
304
+ if (!this.client) {
305
+ await this.connect();
306
+ }
307
+ return new Promise((resolve, reject) => {
308
+ this.client.getSchema(descriptor, this.metadata, (error, response) => {
309
+ if (error) {
310
+ reject((0, utils_1.parseErrorFromGrpc)(error));
311
+ }
312
+ else {
313
+ try {
314
+ const schemaBytes = response.getSchema_asU8();
315
+ const schema = apache_arrow_1.Schema.decode(schemaBytes);
316
+ resolve(schema);
317
+ }
318
+ catch (parseError) {
319
+ reject(new errors_1.FlightError(`Failed to parse schema: ${parseError}`));
320
+ }
321
+ }
322
+ });
323
+ });
324
+ }
325
+ async listActions() {
326
+ if (!this.client) {
327
+ await this.connect();
328
+ }
329
+ const empty = new Flight_pb_1.Empty();
330
+ return new Promise((resolve, reject) => {
331
+ const call = this.client.listActions(empty, this.metadata);
332
+ const actions = [];
333
+ call.on('data', (actionType) => {
334
+ actions.push(actionType);
335
+ });
336
+ call.on('error', (error) => {
337
+ reject((0, utils_1.parseErrorFromGrpc)(error));
338
+ });
339
+ call.on('end', () => {
340
+ resolve(actions);
341
+ });
342
+ });
343
+ }
344
+ async close() {
345
+ if (this.client) {
346
+ this.client.close();
347
+ this.client = null;
348
+ }
349
+ }
350
+ }
351
+ exports.FlightClient = FlightClient;
352
+ //# sourceMappingURL=flight-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flight-client.js","sourceRoot":"","sources":["../src/flight-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { Schema, Table } from 'apache-arrow';
2
+ import { FlightClient } from './flight-client';
3
+ import { FlightSQLClientConfig, PreparedStatement, TableMetadata } from './types';
4
+ /**
5
+ * FlightSQL client implementation extending the base Flight client.
6
+ * Provides SQL-specific operations on top of Apache Arrow Flight protocol.
7
+ */
8
+ export declare class FlightSQLClient extends FlightClient {
9
+ private static readonly TYPE_URLS;
10
+ constructor(config: FlightSQLClientConfig);
11
+ /**
12
+ * Wraps a FlightSQL command in a google.protobuf.Any message.
13
+ * This is required by the FlightSQL specification for proper command serialization.
14
+ */
15
+ private packCommand;
16
+ /**
17
+ * Executes a SQL query and returns the raw Arrow result.
18
+ * Provides access to schema information and Arrow batches.
19
+ */
20
+ execute(query: string): Promise<Table>;
21
+ /**
22
+ * Creates a FlightDescriptor for a FlightSQL command.
23
+ */
24
+ private createCommandDescriptor;
25
+ /**
26
+ * Gets a ticket from a FlightDescriptor for query execution.
27
+ */
28
+ private getQueryTicket;
29
+ getQuerySchema(query: string): Promise<Schema>;
30
+ prepare(query: string): Promise<PreparedStatement>;
31
+ executePrepared(prepared: PreparedStatement): Promise<any[]>;
32
+ closePrepared(prepared: PreparedStatement): Promise<void>;
33
+ getCatalogs(): Promise<string[]>;
34
+ getSchemas(catalog?: string): Promise<Array<{
35
+ catalog: string;
36
+ schema: string;
37
+ }>>;
38
+ getTables(catalog?: string, dbSchema?: string, tableName?: string, tableTypes?: string[]): Promise<Array<{
39
+ catalog: string;
40
+ schema: string;
41
+ tableName: string;
42
+ tableType: string;
43
+ }>>;
44
+ getTableTypes(): Promise<string[]>;
45
+ getPrimaryKeys(catalog: string, dbSchema: string, tableName: string): Promise<TableMetadata['primaryKeys']>;
46
+ getForeignKeys(catalog: string, dbSchema: string, tableName: string): Promise<TableMetadata['foreignKeys']>;
47
+ }
48
+ //# sourceMappingURL=flightsql-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flightsql-client.d.ts","sourceRoot":"","sources":["../src/flightsql-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAe7C,OAAO,EAAC,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAGhF;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAE/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAW/B;gBAEU,MAAM,EAAE,qBAAqB;IAIzC;;;OAGG;IACH,OAAO,CAAC,WAAW;IAOnB;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAiB5C;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;OAEG;YACW,cAAc;IAgBtB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe9C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyBlD,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA4B5D,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAczD,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBhC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA+BjF,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7G,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IAkCG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAyBlC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAqC3G,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;CAuClH"}