🚀 RushDB SDK for JavaScript and TypeScript
The Modern Graph Database Client for Web & Node.js
🌐 Website • 📖 Documentation • ☁️ Cloud Platform • 🔍 Examples
✨ Highlights
- 🔌 No Configuration Needed: Plug-and-play design requires minimal setup to get started
- 🛡️ Automatic Type Inference: Enjoy seamless type safety with automatic TypeScript inference
- 🔄 Isomorphic Architecture: Fully compatible with both server and browser environments
- ⚡ Zero Dependencies: Lightweight (just 6.9KB gzipped) and efficient with no external dependencies
📦 Installation
# NPM
npm install @rushdb/javascript-sdk
# YARN
yarn add @rushdb/javascript-sdk
# PNPM
pnpm add @rushdb/javascript-sdk
🚀 Usage
- Obtain API Key: Grab one from the RushDB Cloud Dashboard.
- Build anything: Easily push, search, and manage relationships within your data.
Quick Example
import RushDB from '@rushdb/javascript-sdk';
// Setup SDK
const db = new RushDB("RUSHDB_API_KEY");
// Default URL is "https://api.rushdb.com/api/v1". See SDK Configuration for more options.
// Push any data, and RushDB will automatically flatten it into Records
// and establish relationships between them accordingly.
await db.records.createMany({
label: "COMPANY",
payload: {
name: 'Google LLC',
address: '1600 Amphitheatre Parkway, Mountain View, CA 94043, USA',
foundedAt: '1998-09-04T00:00:00.000Z',
rating: 4.9,
DEPARTMENT: [{
name: 'Research & Development',
description: 'Innovating and creating advanced technologies for AI, cloud computing, and consumer devices.',
PROJECT: [{
name: 'Bard AI',
description: 'A state-of-the-art generative AI model designed for natural language understanding and creation.',
active: true,
budget: 1200000000,
EMPLOYEE: [{
name: 'Jeff Dean',
position: 'Head of AI Research',
email: 'jeff@google.com',
dob: '1968-07-16T00:00:00.000Z',
salary: 3000000
}]
}]
}]
}
})
// Find Records by specific criteria
const matchedEmployees = await db.records.find({
labels: ['EMPLOYEE'],
where: {
position: { $contains: 'AI' },
PROJECT: {
DEPARTMENT: {
COMPANY: {
rating: { $gte: 4 }
}
}
}
}
})
const company = await db.records.findUniq({
labels: ['COMPANY'],
where: {
name: 'Google LLC'
}
})
// Manage relationships
await company.attach(matchedEmployees, { type: "WORKING_AT" })
⚙️ SDK Configuration
The SDK is designed to be flexible. You can provide configuration options when initializing RushDB
to customize its behavior, such as the API endpoint or request timeouts.
import RushDB from '@rushdb/javascript-sdk';
// Example: Initialize with a custom URL and timeout
const db = new RushDB('RUSHDB_API_KEY', {
url: 'http://your-custom-rushdb-server.com/api/v1', // Default is 'https://api.rushdb.com/api/v1'
timeout: 30000 // 30 seconds
});
The RushDB
constructor accepts an optional second argument for configuration. Key options include:
url
: The complete URL to the RushDB API.- Alternatively,
host
,port
, andprotocol
can be specified individually. timeout
: Request timeout in milliseconds (default: 10000).httpClient
: For advanced use cases, provide a custom HTTP client implementation.logger
: Implement a custom logger for debugging or monitoring.options.allowForceDelete
: Set totrue
to enable deleting all records without specifying criteria (defaults tofalse
for safety).
For a comprehensive guide on all available configuration options, please refer to the SDK Configuration Documentation.
You're Awesome! 🚀
📚 Check the Complete Documentation and Examples Repository to learn more!
🤝 Contributing
We welcome contributions! See our CONTRIBUTING.md guide for details.