import * as path from "path"; import { Firestore, getFirestore } from "firebase-admin/firestore"; import { EventContext, logger } from "firebase-functions"; import * as fw from "../fw"; import { AppConfig } from "../config"; interface CloudFunctionHandler { (context: EventContext): PromiseLike | any; } interface TaskCore { getConfig: () => Promise; getFirestore: () => Firestore; getLogger: () => typeof logger; } export function withTaskCore(fn: (core: TaskCore) => T): T { return fn({ getConfig: async () => { return (await fw.Configure(path.resolve(__dirname, "../config"))).app as AppConfig; }, getFirestore: () => getFirestore(), getLogger: () => logger, }); }