UNPKG

@dataql/node

Version:

DataQL core SDK for unified data management with MongoDB and GraphQL - Production Multi-Cloud Ready

85 lines (84 loc) 2.75 kB
export interface CustomRequestConnection { /** * Custom request method that will be used instead of fetch * @param url The target URL for the request * @param options Request options including method, headers, body * @returns Promise that resolves to a Response-like object */ request(url: string, options: RequestInit): Promise<Response>; } export interface WorkerBinding { fetch(request: Request): Promise<Response>; } export interface ConnectionOptions { customConnection?: CustomRequestConnection; workerBinding?: WorkerBinding; } export interface DataOptions { debug?: boolean; env?: "dev" | "prod"; devPrefix?: string; /** Database connection string - for users who want to provide their own MongoDB URI instead of using DataQL's Database-as-a-Service */ connectionString?: string; } export interface DataCollection { name: string; schema: any; indexes?: any[]; } export interface DatabaseConfig { /** Database name (required - each client gets their own database) */ name: string; /** Database connection URL (optional - uses main database URL if not provided. Database type auto-detected from URL protocol) */ url?: string; } export interface InternalDatabaseConfig extends Omit<DatabaseConfig, "url"> { /** Database connection URL (required for internal use) */ url: string; /** Internal connection pool settings */ pool?: { min?: number; max?: number; acquireTimeoutMillis?: number; idleTimeoutMillis?: number; }; /** Internal SSL/TLS configuration */ ssl?: boolean | { rejectUnauthorized?: boolean; ca?: string; cert?: string; key?: string; }; /** Internal timeout configuration */ timeout?: number; /** Internal retry configuration */ retryConfig?: { maxRetries?: number; retryDelay?: number; }; } export interface InternalConnectionConfig { privateToken: string; appName: string; databaseName: string; mongodbUrl: string; /** Internal connection timeout in milliseconds */ timeout?: number; /** Internal retry configuration */ retryConfig?: { maxRetries?: number; retryDelay?: number; }; } export interface InternalConnectionAuth { /** Validate the private token */ validateToken(token: string): Promise<boolean>; /** Get connection details for the app */ getConnectionDetails(appName: string): Promise<{ databaseName: string; mongodbUrl: string; permissions: string[]; }>; /** Generate a session token for the connection */ generateSessionToken(appName: string, privateToken: string): Promise<string>; }