@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
136 lines • 3.2 kB
TypeScript
/**
* Next.js環境のクライアント用共通型定義
*/
/**
* 基本的なクライアント設定
*/
export interface BaseClientConfig {
url: string;
key?: string;
database: {
ksql: {
url: string;
headers?: Record<string, string>;
};
schemaRegistry: {
url: string;
};
};
realtime?: {
url: string;
autoReconnect?: boolean;
reconnectInterval?: number;
maxReconnectAttempts?: number;
};
global?: {
headers?: Record<string, string>;
schema?: string;
};
}
/**
* ブラウザクライアント設定(公開可能な設定のみ)
*/
export interface BrowserClientConfig extends BaseClientConfig {
database: {
ksql: {
url: string;
apiKey?: string;
headers?: Record<string, string>;
};
schemaRegistry: {
url: string;
apiKey?: string;
};
};
realtime?: {
url: string;
apiKey?: string;
autoReconnect?: boolean;
reconnectInterval?: number;
maxReconnectAttempts?: number;
};
}
/**
* サーバークライアント設定(プライベート設定も含む)
*/
export interface ServerClientConfig extends BaseClientConfig {
database: {
ksql: {
url: string;
apiKey?: string;
apiSecret?: string;
headers?: Record<string, string>;
};
schemaRegistry: {
url: string;
apiKey?: string;
authUser?: string;
authPassword?: string;
};
};
realtime?: {
url: string;
apiKey?: string;
apiSecret?: string;
autoReconnect?: boolean;
reconnectInterval?: number;
maxReconnectAttempts?: number;
};
}
/**
* クライアントの健康状態
*/
export interface ClientHealth {
status: 'ok' | 'error' | 'degraded';
version: string;
features: string[];
connections: {
ksqldb: 'connected' | 'disconnected' | 'error';
schemaRegistry: 'connected' | 'disconnected' | 'error';
realtime: 'connected' | 'disconnected' | 'error';
};
environment: 'browser' | 'server';
}
/**
* クライアントの基本インターフェース
*/
export interface BaseClient {
initialize(): Promise<void>;
health(): Promise<ClientHealth>;
disconnect(): Promise<void>;
isConnected(): boolean;
}
/**
* クエリ実行結果
*/
export interface QueryResult<T = any> {
data: T[];
error: Error | null;
metadata?: {
rowCount: number;
executionTime: number;
queryId?: string;
};
}
/**
* ストリーミングクエリの制御
*/
export interface StreamController {
terminate: () => void;
pause: () => void;
resume: () => void;
isActive: () => boolean;
}
/**
* 環境判定結果
*/
export interface EnvironmentInfo {
isBrowser: boolean;
isNode: boolean;
isNextJS: boolean;
isServerSide: boolean;
isClientSide: boolean;
isDevelopment: boolean;
isProduction: boolean;
}
//# sourceMappingURL=types.d.ts.map