Anton Malykhin
feat: integrate bucket-backed leaderboard data
c6afb12
Raw
History Blame Contribute Delete
1.2 kB
import type { PublicBucketError, PublicBucketErrorCode } from '$lib/types/bucket-state';
import { HfBucketError } from './client';
function codeFromError(error: unknown): PublicBucketErrorCode {
if (error instanceof HfBucketError) {
if (error.status === 401) return 'unauthorized';
if (error.status === 403) return 'forbidden';
if (error.status === 404) return 'not_found';
const message = error.message.toLowerCase();
if (message.includes('hf_token')) return 'missing_token';
if (message.includes('timed out')) return 'timeout';
if (message.includes('valid json')) return 'invalid_json';
if (message.includes('hash')) return 'hash_mismatch';
if (
message.includes('validation') ||
message.includes('schema') ||
message.includes('duplicate') ||
message.includes('unknown')
) {
return 'invalid_schema';
}
}
return 'unknown';
}
export function toPublicBucketError(error: unknown): PublicBucketError {
if (error instanceof HfBucketError) {
return {
code: codeFromError(error),
message: error.message,
status: error.status
};
}
return {
code: 'unknown',
message: error instanceof Error ? error.message : 'Unknown bucket error.'
};
}