TypeScript library for uploading files to the Vaulta API. Works in Node.js, Next.js, and browsers.
npm install @vaulta.dev/sdk
# or
pnpm add @vaulta.dev/sdkimport { VaultaClient } from "@vaulta.dev/sdk";
const client = new VaultaClient({
apiKey: "your-api-key",
apiUrl: "https://your-api.example.com/api/v1",
});
// Upload files
const result = await client.uploadFiles(files);
console.log(result.data);// Upload from file path
await client.uploadFiles("/path/to/file.jpg");
// Multiple files
await client.uploadFiles(["/path/to/file1.jpg", "/path/to/file2.pdf"]);import fs from "fs";
const buffer = fs.readFileSync("image.jpg");
// Add metadata to buffer
buffer.name = "image.jpg";
buffer.type = "image/jpeg";
await client.uploadFiles(buffer);// From file input
const fileInput = document.querySelector('input[type="file"]');
await client.uploadFiles(fileInput.files[0]);
// Multiple files
await client.uploadFiles(Array.from(fileInput.files));// app/upload/page.tsx
import { VaultaClient } from "@vaulta.dev/sdk";
async function uploadAction(formData: FormData) {
"use server";
const client = new VaultaClient({
apiKey: process.env.VAULTA_API_KEY!,
isBrowser: true,
});
const file = formData.get("file") as File;
const result = await client.uploadFiles(file);
return result;
}| Option | Type | Required | Description |
|---|---|---|---|
apiKey |
string |
Yes | Your Vaulta API key |
apiUrl |
string |
No | API base URL (defaults to https://localhost:8000/api/v1) |
isBrowser |
boolean |
No | Set to true when running in browser environments (e.g., Next.js client components, React apps). Uses native fetch and FormData instead of Node.js modules. |
- Node.js: File paths (strings), Buffers
- Browser: File objects, Blob objects
- Next.js: File objects, Blob objects (server actions/API routes)
import { ValidationError, UploadError } from "@vaulta.dev/sdk/errors";
try {
await client.uploadFiles(files);
} catch (error) {
if (error instanceof ValidationError) {
console.log("Invalid file type:", error.message);
} else if (error instanceof UploadError) {
console.log("Upload failed:", error.message);
}
}Full TypeScript support with type definitions:
import type { UploadResponseType } from "@vaulta.dev/sdk/types";
const result: UploadResponseType = await client.uploadFiles(files);- Node.js: 18+
- TypeScript: 4.5+ (optional)
- Browsers: Modern browsers with fetch support
- Next.js: 13+ (App Router recommended)
Apache-2.0