@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
206 lines • 7.19 kB
JavaScript
/**
* GFTD ORM - Enterprise-grade real-time data platform
* Inspired by Supabase architecture with ksqlDB backend
*/
// Re-export core types and functionality
export * from './types';
// Re-export remaining modules
export * from './realtime';
// config exports conflict with @gftdcojp/ksqldb-orm exports
export { validateConfig, initializeConfig, getCoreConfig, getDatabaseConfig, getRealtimeConfig } from './config';
export * from './rate-limit';
export * from './browser-client';
// 🆕 NEW: Supabase-like Authentication & Security Features
// @deprecated - 認証機能は @gftdcojp/auth パッケージに移行されました
// export * from './anon-key-system';
export * from './supabase-like-client';
// 🔐 NEW: Auth0 Integration
// @deprecated - 認証機能は @gftdcojp/auth パッケージに移行されました
// export * from './auth0-integration';
// export * from './auth0-supabase-client';
// 🚀 NEW: Next.js Auth0 Integration
// 注意: 認証関連のエクスポートは @gftdcojp/auth パッケージに移行されました
// 下記の認証機能は @gftdcojp/auth からインポートしてください
// React Hooks are exported separately due to JSX requirements
// Note: For client-side usage, import from '@gftdcojp/gftd-orm/client'
// import { useUser, UserProvider, withPageAuthRequired, withApiAuthRequired } from './nextjs-auth0-hooks';
// Mock implementations for ksqlDB functionality
// @todo [P2] Replace with actual ksqlDB implementation
// Assigned: Backend Team | Milestone: Q2 2025 | Impact: Core functionality
const initializeKsqlDbClient = (config) => {
console.log('[MOCK] ksqlDB client initialized:', config);
};
const getKsqlConfig = () => ({ url: 'http://localhost:8088' });
const initializeSchemaRegistryClient = (config) => {
console.log('[MOCK] Schema Registry client initialized:', config);
};
const getSchemaRegistryConfig = () => ({ url: 'http://localhost:8081' });
import { createRealtime } from './realtime';
import { validateConfig, getCoreConfig, getDatabaseConfig, getRealtimeConfig } from './config';
import { log } from './utils/logger';
/**
* 統合クライアント
*/
export class GftdOrmClient {
constructor(config) {
this.config = config;
this.realtimeClient = null;
this.initialized = false;
}
/**
* クライアント初期化
*/
async initialize() {
if (this.initialized) {
log.info('GFTD ORM Client already initialized');
return;
}
try {
// ksqlDBクライアントを初期化
initializeKsqlDbClient(this.config.database.ksql);
// Schema Registryクライアントを初期化
initializeSchemaRegistryClient(this.config.database.schemaRegistry);
// Realtimeクライアントを初期化(設定がある場合)
if (this.config.realtime) {
this.realtimeClient = createRealtime(this.config.realtime);
}
this.initialized = true;
log.success('GFTD ORM Client initialized successfully');
}
catch (error) {
log.failure('Failed to initialize GFTD ORM Client:', error);
throw error;
}
}
/**
* ヘルスチェック
*/
async health() {
const ksqlConfig = getKsqlConfig();
const schemaRegistryConfig = getSchemaRegistryConfig();
return {
status: 'ok',
version: '25.07.6',
features: this.initialized ? ['database', 'schema-registry', 'realtime', 'audit', 'rate-limit'] : ['basic'],
connections: {
ksqldb: ksqlConfig ? 'connected' : 'disconnected',
schemaRegistry: schemaRegistryConfig ? 'connected' : 'disconnected',
realtime: this.realtimeClient ? 'connected' : 'disconnected',
},
};
}
/**
* リアルタイムチャンネルを取得
*/
channel(topic) {
if (!this.realtimeClient) {
throw new Error('Realtime client is not initialized. Please provide realtime configuration.');
}
return this.realtimeClient.channel(topic);
}
/**
* 接続状態を確認
*/
isConnected() {
return this.initialized;
}
/**
* クライアントを閉じる
*/
disconnect() {
if (this.realtimeClient) {
this.realtimeClient.disconnect();
}
this.initialized = false;
log.info('GFTD ORM Client disconnected');
}
}
/**
* 統合クライアント作成関数
*/
export function createClient(config) {
return new GftdOrmClient(config);
}
// Re-export commonly used functions for convenience
// AuditLogManager is now re-exported from @gftdcojp/ksqldb-orm
export { RateLimitManager } from './rate-limit';
/**
* 設定の初期化と検証
*/
export function init() {
validateConfig();
log.success('GFTD ORM configuration validated');
}
/**
* ヘルスチェック(スタンドアロン)
*/
export async function healthCheck() {
const core = getCoreConfig();
const database = getDatabaseConfig();
const realtime = getRealtimeConfig();
return {
status: 'ok',
version: '25.07.6',
config: {
core: !!core.url,
database: !!database.ksql.url && !!database.schemaRegistry.url,
realtime: !!realtime.url,
},
};
}
// 🌐 NEW: 翻訳機能 - Weblate統合
export * from './translator-client';
export { translator } from './translator-client';
// React Hooks for Translation
export * from './hooks';
// 🔐 統一認証設定 (auth.gftd.ai ドメイン)
export { UnifiedAuthManager, getUnifiedAuthManager, UnifiedAuthPresets, unifiedAuthRedirectMiddleware, } from './unified-auth-config';
// 🔐 認証機能 - @gftdcojp/auth パッケージからの再エクスポート
// NOTE: @gftdcojp/auth パッケージが適切にビルドされたら以下のコメントを解除してください
// Server-side Auth0 SDK
// export {
// getSession,
// getAccessToken,
// updateSession,
// withMiddlewareAuthRequired,
// auth0Middleware,
// withApiAuthRequired,
// handleAuth,
// handleAuthLogin,
// handleAuthLogout,
// handleAuthCallback,
// handleAuthMe,
// createNextJsAuth0Client,
// type Session,
// type NextJsAuth0Config,
// } from '@gftdcojp/auth/nextjs-auth0';
// Client-side React SDK
// export {
// useUser,
// useAccessToken,
// useLogout,
// UserProvider,
// withPageAuthRequired,
// AuthenticatedLayout,
// type UseUserReturn,
// type UseAccessTokenReturn,
// type LogoutFunction,
// type UserProviderProps,
// type AuthenticatedLayoutProps,
// } from '@gftdcojp/auth/client';
// Components
// export {
// SafeAuthComponent,
// } from '@gftdcojp/auth/components';
// Core Auth0 Integration
// export {
// Auth0Integration,
// auth0,
// type Auth0Config,
// type Auth0Organization,
// type Auth0OrganizationMember,
// type Auth0OrganizationInvitation,
// type Auth0User,
// type Auth0ManagementResponse,
// } from '@gftdcojp/auth';
//# sourceMappingURL=index.js.map