A lightweight Arrow Flight client for Node.js. Send Apache Arrow tables over gRPC with a fluent API.
npm install @datumland/arrowflightjsPeer requirement: Node.js >= 18.
import { FlightClient, rowsToTable } from '@datumland/arrowflightjs';
const client = new FlightClient('localhost:50051');
// Upload rows as an Arrow table
await client
.put([
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
])
.toPath(['my', 'dataset'])
.execute();
// Or pass an Arrow Table directly
import { tableFromArrays } from 'apache-arrow';
const table = tableFromArrays({ id: [1, 2], name: ['Alice', 'Bob'] });
await client.put(table).toPath(['my', 'dataset']).execute();
// Execute a server action
const results = await client
.action('myAction')
.withBody(Buffer.from('payload'))
.execute();
await client.close();Creates a client connected to a Flight server.
| Option | Type | Description |
|---|---|---|
tls |
boolean |
Use TLS (default false) |
headers |
Record<string, string> |
Headers sent with every RPC |
middleware |
ClientMiddleware[] |
nice-grpc middleware chain |
Starts a DoPut operation. Accepts an Arrow Table or an array of row objects (converted via rowsToTable).
Returns a PutOperation builder:
client.put(rows)
.toPath(['bucket', 'key']) // or .toCmd(Buffer.from('...'))
.withMetadata(Buffer.from('app meta'))
.execute(); // → Promise<PutResult[]>Starts a DoAction operation.
Returns an ActionOperation builder:
client.action('compact')
.withBody(Buffer.from('{}'))
.execute(); // → Promise<Buffer[]>Converts an array of plain objects to a columnar Arrow Table.
const table = rowsToTable([{ x: 1 }, { x: 2 }]);npm install
npm run generate # generate gRPC stubs from Flight.proto
npm run build # compile TypeScript
npm test # run tests