@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
119 lines • 3.02 kB
TypeScript
/**
* GFTD ORM Core Types
*/
/**
* ユーザーペイロード
*/
export interface UserPayload {
sub: string;
email?: string;
role: 'anon' | 'authenticated' | 'service_role';
tenant_id: string;
metadata?: {
auth0_user_id?: string;
email_verified?: boolean;
name?: string;
picture?: string;
nickname?: string;
roles?: string[];
permissions?: string[];
[key: string]: any;
};
app_metadata?: {
provider?: string;
domain?: string;
client_id?: string;
picture?: string;
[key: string]: any;
};
user_metadata?: {
email?: string;
name?: string;
picture?: string;
[key: string]: any;
};
}
/**
* 監査ログレベル
*/
export declare enum AuditLogLevel {
DEBUG = "DEBUG",
INFO = "INFO",
WARN = "WARN",
ERROR = "ERROR",
CRITICAL = "CRITICAL"
}
/**
* 監査イベントタイプ
*/
export declare enum AuditEventType {
AUTH_LOGIN = "AUTH_LOGIN",
AUTH_LOGOUT = "AUTH_LOGOUT",
AUTH_FAILED = "AUTH_FAILED",
DATA_READ = "DATA_READ",
DATA_WRITE = "DATA_WRITE",
DATA_DELETE = "DATA_DELETE",
ADMIN_ACTION = "ADMIN_ACTION",
ADMIN_USER_CREATE = "ADMIN_USER_CREATE",
ADMIN_USER_DELETE = "ADMIN_USER_DELETE",
ADMIN_POLICY_CHANGE = "ADMIN_POLICY_CHANGE",
UNAUTHORIZED_ACCESS = "UNAUTHORIZED_ACCESS",
SECURITY_EVENT = "SECURITY_EVENT"
}
/**
* 監査ログエントリ
*/
export interface AuditLogEntry {
level: AuditLogLevel;
eventType: AuditEventType;
userId?: string;
tenantId?: string;
result: 'SUCCESS' | 'FAILURE';
message: string;
details?: Record<string, any>;
timestamp?: Date;
}
/**
* 監査ログマネージャー
*/
export declare class AuditLogManager {
static log(entry: AuditLogEntry): void;
static logRateLimitViolation(userId: string, details: any): void;
static logSecurityViolation(userId: string, violationType: string, details: any): void;
}
/**
* 認証結果
*/
export interface AuthResult {
user: UserPayload;
accessToken: string;
refreshToken?: string;
expiresIn: number;
expiresAt?: number;
tokenType: string;
}
/**
* Pull Query Options
*/
export interface PullQueryOptions {
limit?: number;
offset?: number;
where?: Record<string, any>;
orderBy?: string;
timeout?: number;
}
export declare const jwtAuth: {
authenticate: (user: UserPayload) => AuthResult;
verifyToken: (token: string) => UserPayload | null;
};
export declare const rls: {
enable: () => void;
disable: () => void;
setUser: (user: UserPayload) => void;
applyToQuery: (query: string, user: UserPayload | null) => string;
};
export declare const executePullQuery: (query: string, options?: PullQueryOptions) => Promise<{
data: any[];
}>;
export declare const executePushQuery: (query: string, onData?: any, onError?: any) => Promise<any>;
//# sourceMappingURL=types.d.ts.map