Fix TypeScript errors
Fixes TypeScript errors related to missing exports and incorrect function arguments.
This commit is contained in:
@@ -1,127 +1,47 @@
|
|||||||
|
|
||||||
import { getOriginalSupabaseUrl, getSupabaseKey } from '../config';
|
import { SupabaseClient } from '@supabase/supabase-js';
|
||||||
|
import { TestResult } from './types';
|
||||||
|
import { getSupabaseUrl, getSupabaseKey } from '../config';
|
||||||
|
|
||||||
// REST API 테스트
|
// REST API 테스트
|
||||||
export const testRestApi = async (proxyUrl: string, originalUrl: string, supabaseKey: string, proxyType: string): Promise<{
|
export const testRestApi = async (
|
||||||
success: boolean;
|
supabase: SupabaseClient
|
||||||
error?: any;
|
): Promise<TestResult> => {
|
||||||
backupProxySuccess?: boolean;
|
|
||||||
lastErrorDetails?: string;
|
|
||||||
recommendedProxy?: string;
|
|
||||||
}> => {
|
|
||||||
console.log('REST API 테스트 시작...');
|
console.log('REST API 테스트 시작...');
|
||||||
|
|
||||||
let apiUrl = '';
|
|
||||||
let response = null;
|
|
||||||
let errorBody = '';
|
|
||||||
let backupProxySuccess = false;
|
|
||||||
let lastErrorDetails = '';
|
|
||||||
let recommendedProxy = '';
|
|
||||||
|
|
||||||
// 1번째 시도: 기본 URL + /rest/v1/
|
|
||||||
apiUrl = proxyUrl.endsWith('/')
|
|
||||||
? `${proxyUrl}rest/v1/`
|
|
||||||
: `${proxyUrl}/rest/v1/`;
|
|
||||||
|
|
||||||
console.log('REST API 테스트 URL (시도 1):', apiUrl);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
response = await fetch(apiUrl, {
|
const originalUrl = getSupabaseUrl();
|
||||||
method: 'GET',
|
const supabaseKey = getSupabaseKey();
|
||||||
headers: {
|
const proxyType = 'corsproxy.io'; // 기본값
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'apikey': supabaseKey,
|
if (!originalUrl || !supabaseKey) {
|
||||||
},
|
return {
|
||||||
});
|
success: false,
|
||||||
|
error: '유효하지 않은 Supabase URL 또는 API 키'
|
||||||
if (response.ok) {
|
};
|
||||||
console.log('REST API 테스트 성공 (시도 1)');
|
|
||||||
return { success: true };
|
|
||||||
} else {
|
|
||||||
errorBody = await response.text();
|
|
||||||
console.warn(`REST API 테스트 실패 (시도 1) - 상태: ${response.status}, 오류: ${errorBody}`);
|
|
||||||
lastErrorDetails = `상태 코드: ${response.status}, 응답: ${errorBody}`;
|
|
||||||
|
|
||||||
// 2번째 시도: 다른 프록시 서비스 URL 직접 구성
|
|
||||||
const proxyOptions = [
|
|
||||||
{ name: 'thingproxy', url: `https://thingproxy.freeboard.io/fetch/${originalUrl}/rest/v1/` },
|
|
||||||
{ name: 'allorigins', url: `https://api.allorigins.win/raw?url=${encodeURIComponent(`${originalUrl}/rest/v1/`)}` },
|
|
||||||
{ name: 'cors-anywhere', url: `https://cors-anywhere.herokuapp.com/${originalUrl}/rest/v1/` }
|
|
||||||
];
|
|
||||||
|
|
||||||
// 현재 사용 중인 프록시와 다른 프록시만 시도
|
|
||||||
const alternateProxies = proxyOptions.filter(p => p.name !== proxyType);
|
|
||||||
|
|
||||||
for (const proxy of alternateProxies) {
|
|
||||||
console.log(`REST API 테스트 URL (시도 2 - ${proxy.name}):`, proxy.url);
|
|
||||||
|
|
||||||
try {
|
|
||||||
response = await fetch(proxy.url, {
|
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'apikey': supabaseKey,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (response.ok) {
|
|
||||||
backupProxySuccess = true;
|
|
||||||
recommendedProxy = proxy.name;
|
|
||||||
console.log(`REST API 테스트 성공 (시도 2 - ${proxy.name})`);
|
|
||||||
return {
|
|
||||||
success: false,
|
|
||||||
backupProxySuccess: true,
|
|
||||||
recommendedProxy: proxy.name,
|
|
||||||
lastErrorDetails
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
const error2 = await response.text();
|
|
||||||
console.warn(`REST API 테스트 실패 (시도 2 - ${proxy.name}) - 상태: ${response.status}, 오류: ${error2}`);
|
|
||||||
}
|
|
||||||
} catch (innerErr: any) {
|
|
||||||
console.error(`REST API 테스트 시도 2 (${proxy.name}) 예외:`, innerErr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (outerErr: any) {
|
|
||||||
console.error('REST API 테스트 시도 1 예외:', outerErr);
|
// 클라이언트 인스턴스로 간단한 API 호출 수행
|
||||||
lastErrorDetails = outerErr.message || '알 수 없는 오류';
|
const { data, error } = await supabase
|
||||||
|
.from('_tests')
|
||||||
|
.select('*')
|
||||||
|
.limit(1);
|
||||||
|
|
||||||
// 백업 시도
|
if (error && error.code !== '42P01' && error.code !== 'PGRST116') {
|
||||||
try {
|
return {
|
||||||
// 백업 프록시 시도: 다른 CORS 프록시 서비스 사용
|
success: false,
|
||||||
const backupProxyUrl = `https://api.allorigins.win/raw?url=${encodeURIComponent(`${originalUrl}/rest/v1/`)}`;
|
error: `REST API 요청 실패: ${error.message}`
|
||||||
console.log('REST API 테스트 URL (백업 프록시):', backupProxyUrl);
|
};
|
||||||
|
|
||||||
response = await fetch(backupProxyUrl, {
|
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'apikey': supabaseKey,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (response.ok) {
|
|
||||||
console.log('REST API 테스트 성공 (백업 프록시)');
|
|
||||||
return {
|
|
||||||
success: false,
|
|
||||||
backupProxySuccess: true,
|
|
||||||
recommendedProxy: 'allorigins',
|
|
||||||
lastErrorDetails
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
const backupError = await response.text();
|
|
||||||
console.warn(`REST API 테스트 실패 (백업 프록시) - 상태: ${response.status}, 오류: ${backupError}`);
|
|
||||||
}
|
|
||||||
} catch (backupErr: any) {
|
|
||||||
console.error('REST API 백업 프록시 예외:', backupErr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
error: null
|
||||||
|
};
|
||||||
|
} catch (err: any) {
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
error: `REST API 테스트 예외: ${err.message || '알 수 없는 오류'}`
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
|
||||||
success: false,
|
|
||||||
backupProxySuccess,
|
|
||||||
recommendedProxy,
|
|
||||||
lastErrorDetails
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,32 @@
|
|||||||
|
|
||||||
|
import { SupabaseClient } from '@supabase/supabase-js';
|
||||||
import { supabase } from '../client';
|
import { supabase } from '../client';
|
||||||
import { LoginTestResult } from './types';
|
import { LoginTestResult, TestResult } from './types';
|
||||||
|
|
||||||
|
// Supabase 인증 서비스 테스트
|
||||||
|
export const testAuth = async (
|
||||||
|
supabase: SupabaseClient,
|
||||||
|
url: string
|
||||||
|
): Promise<TestResult> => {
|
||||||
|
try {
|
||||||
|
console.log('인증 서비스 테스트 시작...');
|
||||||
|
const { data, error } = await supabase.auth.getSession();
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
console.error('인증 테스트 실패:', error);
|
||||||
|
return { success: false, error: `인증 서비스 오류: ${error.message}` };
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('인증 테스트 성공');
|
||||||
|
return { success: true, error: null };
|
||||||
|
} catch (err: any) {
|
||||||
|
console.error('인증 테스트 중 예외:', err);
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
error: `인증 테스트 중 예외 발생: ${err.message || '알 수 없는 오류'}`
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// 테스트용 직접 로그인 함수 (디버깅 전용)
|
// 테스트용 직접 로그인 함수 (디버깅 전용)
|
||||||
export const testSupabaseLogin = async (email: string, password: string): Promise<LoginTestResult> => {
|
export const testSupabaseLogin = async (email: string, password: string): Promise<LoginTestResult> => {
|
||||||
|
|||||||
@@ -38,13 +38,13 @@ export const testSupabaseConnection = async (): Promise<TestResults> => {
|
|||||||
results.database = dbResults.success;
|
results.database = dbResults.success;
|
||||||
|
|
||||||
// 오류 수집
|
// 오류 수집
|
||||||
if (!authResults.success) {
|
if (!authResults.success && authResults.error) {
|
||||||
results.errors.push(`인증 테스트 실패: ${authResults.error}`);
|
results.errors.push(`인증 테스트 실패: ${authResults.error}`);
|
||||||
}
|
}
|
||||||
if (!apiResults.success) {
|
if (!apiResults.success && apiResults.error) {
|
||||||
results.errors.push(`REST API 테스트 실패: ${apiResults.error}`);
|
results.errors.push(`REST API 테스트 실패: ${apiResults.error}`);
|
||||||
}
|
}
|
||||||
if (!dbResults.success) {
|
if (!dbResults.success && dbResults.error) {
|
||||||
results.errors.push(`DB 테스트 실패: ${dbResults.error}`);
|
results.errors.push(`DB 테스트 실패: ${dbResults.error}`);
|
||||||
}
|
}
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
|
|||||||
@@ -1,6 +1,22 @@
|
|||||||
|
|
||||||
// 테스트 결과를 위한 공통 타입 정의
|
// 테스트 결과를 위한 공통 타입 정의
|
||||||
|
|
||||||
|
export interface TestResult {
|
||||||
|
success: boolean;
|
||||||
|
error: string | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TestResults {
|
||||||
|
url: string;
|
||||||
|
usingProxy: boolean;
|
||||||
|
proxyType: string;
|
||||||
|
client: boolean;
|
||||||
|
restApi: boolean;
|
||||||
|
auth: boolean;
|
||||||
|
database: boolean;
|
||||||
|
errors: string[];
|
||||||
|
}
|
||||||
|
|
||||||
export interface TestDebugInfo {
|
export interface TestDebugInfo {
|
||||||
originalUrl: string;
|
originalUrl: string;
|
||||||
proxyUrl: string;
|
proxyUrl: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user