UNPKG

firebase-tools

Version:
69 lines (68 loc) 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.create_project = void 0; const zod_1 = require("zod"); const tool_js_1 = require("../../tool.js"); const util_js_1 = require("../../util.js"); const projects_js_1 = require("../../../management/projects.js"); const error_js_1 = require("../../../error.js"); async function checkCloudProject(projectId) { try { return await (0, projects_js_1.getProject)(projectId); } catch (err) { if ((0, error_js_1.getErrStatus)(err) === 403) { return undefined; } throw err; } } exports.create_project = (0, tool_js_1.tool)({ name: "create_project", description: "Creates a new Firebase project.", inputSchema: zod_1.z.object({ project_id: zod_1.z.string().describe("The project ID to create or use."), display_name: zod_1.z .string() .optional() .describe("The user-friendly display name for the project."), }), annotations: { title: "Create Firebase Project", destructiveHint: false, readOnlyHint: false, }, _meta: { requiresAuth: true, requiresProject: false, }, }, async ({ project_id, display_name }) => { try { const cloudProject = await checkCloudProject(project_id); if (!cloudProject) { const newProject = await (0, projects_js_1.createFirebaseProjectAndLog)(project_id, { displayName: display_name, }); return (0, util_js_1.toContent)({ message: `Successfully created new Firebase project: ${project_id}`, project: newProject, }); } let firebaseProject = await (0, projects_js_1.checkFirebaseEnabledForCloudProject)(project_id); if (firebaseProject) { return (0, util_js_1.toContent)({ message: `Project ${project_id} already exists and has Firebase enabled.`, project: firebaseProject, }); } firebaseProject = await (0, projects_js_1.addFirebaseToCloudProject)(project_id); return (0, util_js_1.toContent)({ message: `Successfully added Firebase to existing project: ${project_id}`, project: firebaseProject, }); } catch (err) { const originalMessage = err.original ? `: ${err.original.message}` : ""; throw new Error(`${err.message}\nOriginal error: ${originalMessage}`); } });