UNPKG

@levante-framework/firekit

Version:

A library to facilitate Firebase authentication and Firestore interaction for LEVANTE apps

32 lines (31 loc) 1.46 kB
"use strict"; 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 }) }; } }