@levante-framework/firekit
Version:
A library to facilitate Firebase authentication and Firestore interaction for LEVANTE apps
32 lines (31 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.callFirebaseFunction = callFirebaseFunction;
const app_1 = require("firebase/app");
const functions_1 = require("firebase/functions");
const levante_zod_1 = require("@levante-framework/levante-zod");
async function callFirebaseFunction(functions, name, params, appErrorSchema) {
try {
if (!functions)
throw new Error('Functions is not initialized');
const req = (0, functions_1.httpsCallable)(functions, name);
const res = await req(params);
return { code: 'success', data: res.data };
}
catch (err) {
if (err instanceof app_1.FirebaseError) {
const appError = appErrorSchema.safeParse(err);
if (appError.success)
return { code: 'app-error', data: appError.data };
const functionsError = levante_zod_1.FunctionsErrorSchema.safeParse(err);
if (functionsError.success)
return { code: 'functions-error', data: functionsError.data };
const firebaseError = levante_zod_1.FirebaseErrorSchema.safeParse(err);
if (firebaseError.success)
return { code: 'firebase-error', data: firebaseError.data };
}
if (err instanceof Error)
return { code: 'error', data: err };
return { code: 'error', data: new Error(`Unexpected ${name} error`, { cause: err }) };
}
}