UNPKG

@gftdcojp/gftd-orm

Version:

Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture

126 lines (124 loc) 4.45 kB
/** * Next.js環境対応のクライアントエントリポイント * 環境を自動判定して適切なクライアントを提供 */ import { isBrowser, isServerSide, getEnvironmentInfo } from '../utils/env'; // 型定義をエクスポート export * from './types'; // 環境別クライアントを個別にエクスポート export { BrowserClient, createBrowserClient, createNextBrowserClient } from './browser'; export { ServerClient, createServerClient, createNextServerClient, createServerClientFromEnv } from './server'; // 環境判定ユーティリティ export { getEnvironmentInfo } from '../utils/env'; /** * 環境を自動判定してクライアントを作成 */ export function createClient(config) { if (isBrowser()) { const { createBrowserClient } = require('./browser'); return createBrowserClient(config); } else if (isServerSide()) { const { createServerClient } = require('./server'); return createServerClient(config); } else { throw new Error('Unable to determine environment. Please use createBrowserClient or createServerClient explicitly.'); } } /** * Next.js専用のクライアント作成関数 */ export function createNextClient(config) { if (isBrowser()) { const { createNextBrowserClient } = require('./browser'); return createNextBrowserClient(config); } else if (isServerSide()) { const { createNextServerClient } = require('./server'); return createNextServerClient(config); } else { throw new Error('Unable to determine Next.js environment. Please use createNextBrowserClient or createNextServerClient explicitly.'); } } /** * 環境情報を取得 */ export function getClientEnvironment() { return getEnvironmentInfo(); } /** * 環境の検証 */ export function validateEnvironment() { const env = getEnvironmentInfo(); if (!env.isBrowser && !env.isServerSide) { throw new Error('Invalid environment: Neither browser nor server environment detected.'); } if (env.isBrowser && env.isServerSide) { throw new Error('Invalid environment: Both browser and server environment detected.'); } return env; } /** * 開発用の環境情報表示 */ export function logEnvironmentInfo() { const env = getEnvironmentInfo(); console.log('🌍 Environment Information:'); console.log(` • Browser: ${env.isBrowser ? '✅' : '❌'}`); console.log(` • Node.js: ${env.isNode ? '✅' : '❌'}`); console.log(` • Next.js: ${env.isNextJS ? '✅' : '❌'}`); console.log(` • Server-side: ${env.isServerSide ? '✅' : '❌'}`); console.log(` • Client-side: ${env.isClientSide ? '✅' : '❌'}`); console.log(` • Development: ${env.isDevelopment ? '✅' : '❌'}`); console.log(` • Production: ${env.isProduction ? '✅' : '❌'}`); return env; } /** * 推奨されるクライアント作成方法を表示 */ export function getRecommendedClientUsage() { const env = getEnvironmentInfo(); if (env.isBrowser) { return { recommendation: 'Browser Client', usage: 'Use createBrowserClient() or createNextBrowserClient() for Client Components', example: ` import { createBrowserClient } from '@gftdcojp/gftd-orm/client'; const client = createBrowserClient({ url: 'https://your-api.com', database: { ksql: { url: 'https://your-ksql.com', apiKey: 'public-key' }, schemaRegistry: { url: 'https://your-sr.com', apiKey: 'public-key' } } }); `, }; } else if (env.isServerSide) { return { recommendation: 'Server Client', usage: 'Use createServerClient() or createNextServerClient() for Server Components and API Routes', example: ` import { createServerClient } from '@gftdcojp/gftd-orm/client'; const client = createServerClient({ url: 'https://your-api.com', database: { ksql: { url: 'https://your-ksql.com', apiKey: 'api-key', apiSecret: 'secret' }, schemaRegistry: { url: 'https://your-sr.com', authUser: 'user', authPassword: 'pass' } } }); `, }; } else { return { recommendation: 'Unknown Environment', usage: 'Please check your environment configuration', example: 'Unable to determine appropriate client type', }; } } //# sourceMappingURL=index.js.map