@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
TypeScript
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>;
}