Files
wiki/convex/fs.ts

35 lines
1.3 KiB
TypeScript
Raw Normal View History

import { ConvexFS } from "convex-fs";
import { components } from "./_generated/api";
// Check if Bunny CDN is configured
// All three required env vars must be set
export const isBunnyConfigured =
!!process.env.BUNNY_API_KEY &&
!!process.env.BUNNY_STORAGE_ZONE &&
!!process.env.BUNNY_CDN_HOSTNAME;
// ConvexFS instance with Bunny.net Edge Storage
// Set these environment variables in Convex Dashboard:
// - BUNNY_API_KEY: Your Bunny.net API key
// - BUNNY_STORAGE_ZONE: Storage zone name (e.g., "my-storage")
// - BUNNY_CDN_HOSTNAME: CDN hostname (e.g., "my-storage.b-cdn.net")
// - BUNNY_TOKEN_KEY: Optional, for signed URLs
// - BUNNY_REGION: Optional, storage region ("ny", "la", "sg", etc.)
// Only create ConvexFS instance if configured
// This prevents validation errors when env vars are not set
export const fs = isBunnyConfigured
? new ConvexFS(components.fs, {
storage: {
type: "bunny",
apiKey: process.env.BUNNY_API_KEY!,
storageZoneName: process.env.BUNNY_STORAGE_ZONE!,
cdnHostname: process.env.BUNNY_CDN_HOSTNAME!,
region: process.env.BUNNY_REGION,
tokenKey: process.env.BUNNY_TOKEN_KEY,
},
downloadUrlTtl: 3600, // URL expiration in seconds (1 hour)
blobGracePeriod: 86400, // Orphaned blobs deleted after 24 hours
})
: null;