@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
181 lines • 5.67 kB
TypeScript
/**
* Auth0対応 Supabase風クライアント(stub実装)
* @todo [P2] Full implementation when Auth0Integration is complete
*/
import { PullQueryOptions, UserPayload } from './types';
import { RealtimeClient } from './realtime-client';
/**
* Auth0クライアント設定
*/
export interface Auth0ClientConfig {
ksqlDbUrl: string;
auth0Token?: string;
auth0Config?: {
domain?: string;
audience?: string;
clientId?: string;
jwksUri?: string;
};
options?: {
realtime?: {
url?: string;
autoReconnect?: boolean;
};
db?: {
schema?: string;
};
};
}
/**
* Auth0認証状態
*/
export interface Auth0AuthState {
user: UserPayload | null;
isAuthenticated: boolean;
auth0Token: string | null;
error: string | null;
extensionAccessAvailable: boolean;
userGroups?: string[];
userRoles?: string[];
userPermissions?: string[];
}
/**
* Extension用の型定義
*/
export interface ExtensionGroup {
_id: string;
name: string;
description: string;
members?: string[];
roles?: string[];
}
export interface ExtensionRole {
_id: string;
name: string;
description: string;
applicationId: string;
permissions?: string[];
}
export interface ExtensionPermission {
_id: string;
name: string;
description: string;
applicationId: string;
}
export interface ExtensionPolicy {
groups: string[];
roles: string[];
permissions: string[];
}
/**
* Auth0 GFTD クライアント(stub実装)
* @todo [P2] Full implementation when Auth0Integration is complete
*/
export declare class Auth0GftdClient {
private config;
private authState;
private realtimeClient?;
private auth0Manager?;
constructor(config: Auth0ClientConfig);
/**
* トークンによる認証(stub実装)
*/
authenticateWithToken(token: string): Promise<{
success: boolean;
error?: string;
}>;
/**
* 認証状態を取得
*/
get auth(): Auth0AuthState;
/**
* Auth0トークンを設定
*/
setAuth0Token(token: string): Promise<{
success: boolean;
error?: string;
}>;
/**
* SQLクエリの実行(stub実装)
*/
query(sql: string, options?: PullQueryOptions): Promise<{
data: any[];
error: any;
}>;
/**
* ストリーミングクエリ(stub実装)
*/
stream(sql: string, onData: (data: any) => void, onError?: (error: Error) => void): Promise<{
terminate: () => void;
}>;
/**
* 権限チェック(stub実装)
*/
hasPermission(permission: string): boolean;
/**
* ロールチェック(stub実装)
*/
hasRole(role: string): boolean;
/**
* グループチェック(stub実装)
*/
hasGroup(groupName: string): boolean;
/**
* すべてのメソッドをstub実装として定義
* @todo [P2] Replace with actual implementations
*/
getGroups(): Promise<ExtensionGroup[]>;
getGroup(groupId: string): Promise<ExtensionGroup>;
createGroup(name: string, description?: string): Promise<ExtensionGroup>;
updateGroup(groupId: string, updates: Partial<ExtensionGroup>): Promise<ExtensionGroup>;
deleteGroup(groupId: string): Promise<void>;
getRoles(): Promise<ExtensionRole[]>;
getRole(roleId: string): Promise<ExtensionRole>;
createRole(name: string, description?: string, applicationId?: string): Promise<ExtensionRole>;
updateRole(roleId: string, updates: Partial<ExtensionRole>): Promise<ExtensionRole>;
deleteRole(roleId: string): Promise<void>;
addUserToGroups(userId: string, groupIds: string[]): Promise<void>;
removeUserFromGroups(userId: string, groupIds: string[]): Promise<void>;
addUserToRoles(userId: string, roleIds: string[]): Promise<void>;
removeUserFromRoles(userId: string, roleIds: string[]): Promise<void>;
executeAuthorizationPolicy(userId: string, clientId: string, connectionName: string, groups?: string[]): Promise<ExtensionPolicy>;
getMyAuthorizationPolicy(): Promise<ExtensionPolicy | null>;
buildLoginUrl(options: any): string;
buildSignupUrl(options: any): string;
buildLogoutUrl(options: any): string;
buildPasswordResetUrl(options: any): string;
exchangeCodeForToken(options: any): Promise<any>;
refreshAccessToken(refreshToken: string): Promise<any>;
signUp(options: any): Promise<any>;
updateProfile(updates: any): Promise<any>;
deleteAccount(): Promise<void>;
sendPasswordResetEmail(email: string, connection?: string): Promise<void>;
sendEmailVerification(): Promise<void>;
getProfile(): Promise<any>;
getUsers(options?: any): Promise<any[]>;
generatePKCEChallenge(): {
codeVerifier: string;
codeChallenge: string;
};
redirectToLogin(options: any): void;
redirectToSignup(options: any): void;
logout(options: any): void;
handleCallback(options: any): Promise<{
success: boolean;
error?: string;
}>;
createRealtimeClient(options?: {
autoReconnect?: boolean;
}): RealtimeClient;
signOut(): void;
dispose(): void;
}
/**
* Auth0クライアント作成関数
*/
export declare function createAuth0Client(ksqlDbUrl: string, auth0Token?: string, options?: any): Auth0GftdClient;
/**
* Auth0ミドルウェア作成関数(stub実装)
*/
export declare function createAuth0Middleware(options?: any): (req: any, res: any, next: any) => void;
//# sourceMappingURL=auth0-supabase-client.d.ts.map