hypertuner-cloud/src/pocketbase.ts

37 lines
1.0 KiB
TypeScript

import PocketBase, { AuthMethodsList, AuthProviderInfo, ClientResponseError } from 'pocketbase';
import { TypedPocketBase } from './@types/pocketbase-types';
import { fetchEnv } from './utils/env';
const API_URL = fetchEnv('VITE_POCKETBASE_API_URL');
const client = new PocketBase(API_URL) as TypedPocketBase;
const formatError = (error: ClientResponseError) => {
const { data, message } = error;
if (data.data) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
const errors = Object.keys(data.data).map(
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
(key) => `${key.toUpperCase()}: ${data.data[key].message}`,
);
if (errors.length > 0) {
return errors.join(', ');
}
}
return message;
};
const removeFilenameSuffix = (filename: string) =>
filename.replace(/(.+)(_\w{10})(\.\w+)$/, '$1$3');
export {
API_URL,
client,
formatError,
removeFilenameSuffix,
ClientResponseError,
type AuthMethodsList,
type AuthProviderInfo,
};