Skip to content

BadMachine/influxdb3-napi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

influxdb3-napi Logo

influxdb3-napi

High-performance Node.js client for InfluxDB 3.0 with native Rust bindings, supporting both read and write operations.

Installation

npm install @badmachine/influxdb3-napi

Features

  • High Performance - Native Rust bindings for optimal performance
  • SQL Queries - Execute SQL queries with async iterator support
  • Line Protocol Writing - Write data using InfluxDB line protocol
  • TypeScript Support - Full TypeScript definitions included
  • Type Safe - Built with type safety in mind

Why?

  • This library was initially inspired by the need to handle edge cases where other libraries fail to decode certain Arrow Flight data types (see InfluxCommunity/influxdb3-js#590). It correctly supports all data types returned by InfluxDB.
  • Unlike this library, some requests to https hosts were failing with other JS libraries due to self-signed certificate check errors
  • Blazingly™ Much faster than other libraries when querying the data.
  • Includes three different serializers for maximum flexibility:
    • Default serializer — conveniently converts time intervals.
    • Serde-based serializer — leverages serde for basic json serialization.
    • Raw serializer — returns the raw byte array buffer.

Quick Start

import { InfluxDbClient, Point } from '@badmachine/influxdb3-napi';

// Initialize client
const client = new InfluxDbClient(
  'http://your-influxdb-host:8086',
  'your-api-token'
);

// Write data using Point builder
const point = Point.fromMeasurement('temperature')
  .setTag('location', 'office')
  .setTag('sensor', 'temp01')
  .setBooleanField('active', true)
  .setFloatField('value', 23.5);

const lineProtocol = point.toLineProtocol('ns');
await client.write([lineProtocol], 'your-database');

// Query data with async iteration
const result = client.query({
  database: 'your-database',
  query: 'SELECT * FROM temperature WHERE time > now() - 1h',
  type: 'sql'
});

// Stream results efficiently
for await (const row of result) {
  console.log(row);
}

TypeScript Support

Full TypeScript definitions are included:

Contributing

Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.

License

MIT License - see LICENSE file for details.

Support

Changelog

See CHANGELOG.md for version history and changes.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published