buildx-connect
Version:
Official JavaScript/TypeScript SDK for Buildx low-code platform
215 lines (155 loc) • 5.39 kB
Markdown
Official JavaScript/TypeScript SDK for the Buildx low-code platform. Easily integrate Buildx APIs into your Node.js or browser applications with a modular, Firebase-like API.
- [Installation](
- [Quick Start](
- [Configuration](
- [API Overview](
- [Authentication](
- [Projects](
- [Collections](
- [Storage](
- [Flows](
- [Templates](
- [TypeScript Support](
- [Error Handling](
- [License](
---
```bash
yarn add buildx-connect
npm install buildx-connect
```
```typescript
import { Buildx } from 'buildx-connect';
const buildx = new Buildx({
apiEndpoint: 'https://api.buildx.com',
apiKey: 'your-api-key',
projectId: 'your-project-id',
});
// Authenticate
const user = await buildx.auth().login({ username: 'user', password: 'pass' });
// List projects
const projects = await buildx.projects().list();
// Query documents (uses project ID from config)
const docs = await buildx.collections().query('collectionId', { limit: 10 });
```
The SDK is initialized with a configuration object:
```typescript
const buildx = new Buildx({
apiEndpoint: 'https://api.buildx.com',
apiKey: 'your-api-key',
projectId: 'your-project-id', // Used as default for all operations
organizationId?: 'your-org-id', // Optional, for organization-level operations
});
```
You can update the configuration at runtime:
```typescript
buildx.updateConfig({ apiKey: 'new-api-key' });
```
The SDK is organized into modular services, similar to Firebase. All methods use the project ID from your config by default, but you can override it by passing a `projectId` parameter:
```typescript
buildx.auth() // Authentication
buildx.projects() // Project management
buildx.collections() // Data collections
buildx.storage() // File storage
buildx.flows() // Workflow automation
buildx.templates() // Template rendering
```
```typescript
// Login (uses project ID from config)
await buildx.auth().login({ username, password });
// Signup (uses project ID from config)
await buildx.auth().signup({ username, password });
// Get current user (uses project ID from config)
await buildx.auth().getCurrentUser();
// Override project ID for specific operation
await buildx.auth().login({ username, password }, 'different-project-id');
```
The SDK automatically stores authentication tokens when you login, signup, or verify OTP. You can also manually manage tokens:
```typescript
// Check if user is authenticated
const isAuth = buildx.auth().isAuthenticated();
// Get current access token
const token = buildx.auth().getAccessToken();
// Get current refresh token
const refreshToken = buildx.auth().getRefreshToken();
// Manually set tokens
buildx.auth().setAccessToken('your-access-token');
buildx.auth().setRefreshToken('your-refresh-token');
// Clear all stored tokens (logout)
buildx.auth().clearTokens();
// Refresh authentication token
await buildx.auth().refreshToken();
```
```typescript
// List all projects
await buildx.projects().list();
// Get project by ID
await buildx.projects().get('project-id');
// Create a new project
await buildx.projects().create({ name: 'My Project' });
```
```typescript
// List collections (uses project ID from config)
await buildx.collections().list();
// Query documents (uses project ID from config)
await buildx.collections().query('collectionId', { filter: { status: 'active' } });
// Create document (uses project ID from config)
await buildx.collections().createDocument('collectionId', { field: 'value' });
// Override project ID for specific operation
await buildx.collections().query('collectionId', { limit: 10 }, 'different-project-id');
```
```typescript
// Upload a file (uses project ID from config)
await buildx.storage().upload(file, 'uploads/');
// List files (uses project ID from config)
await buildx.storage().list('uploads/');
// Delete a file (uses project ID from config)
await buildx.storage().deleteFile('uploads/file.txt');
```
```typescript
// Get flow types
await buildx.flows().getTypes();
// Run a flow (uses project ID from config)
await buildx.flows().run('flow-id', { args: { foo: 'bar' } });
```
```typescript
// Preview a template (uses project ID from config)
await buildx.templates().preview(template, data);
// Render a template (uses project ID from config)
await buildx.templates().render('template-id', data);
// Generate PDF (uses project ID from config)
await buildx.templates().generatePDF('template-id', data);
```
This SDK is written in TypeScript and ships with full type definitions for all APIs and data models.
All methods return either the expected result or an `ErrorResponse` object:
```typescript
interface ErrorResponse {
error: string;
message: string;
statusCode: number;
success: false;
}
```
Check for errors in your code:
```typescript
const result = await buildx.projects().get('project-id');
if ('error' in result) {
// handle error
console.error(result.message);
}
```